【发布时间】:2021-01-16 16:14:55
【问题描述】:
我为教程目的编写了一个简单的 C++ 程序。 我的目标是无限循环。
#include <iostream>
#include <string>
int main()
{
std::cout << "text";
for(;;) {
std::string string_object{};
std::getline(std::cin, string_object);
std::cout << string_object;
}
return 0;
}
编译后我像这样运行它:
./bin 0>&1
我期望发生的是输出到标准输出的“文本”,现在它也将成为程序的标准输入,它将永远循环。为什么没有发生?
【问题讨论】:
-
I/O 流不是这样工作的。写入终端不会将数据放入键盘输入中。
-
你可以使用
std::stringstream来做这样的事情。 -
究竟为什么要这样做?听起来很有趣,我喜欢这个问题,但我很好奇是否有一个实际的用例。
-
@Barmar 你能帮我区分一下吗?不是通过重定向0>&1来完成的吗?
-
但是stdin是输入流,不能用
>重定向,应该用<。但这是同样的问题。
标签: c++ linux shell stdout stdin