【发布时间】:2015-08-10 15:55:59
【问题描述】:
关于标准 io 的练习要求我:
从标准输入读取输入并将其写入标准输出。
一个可能的解决方案是:
#include<iostream>
#include<string>
using std::cin; using std::cout;
using std::string;
int main()
{
string word;
while (cin >> word)
cout << word;
return 0;
}
此示例中的字符串充当缓冲区。如果尝试通过执行以下操作来摆脱缓冲区:
#include<iostream>
using std::cin; using std::cout;
int main()
{
while (cout << cin)
;
return 0;
}
结果非常不同。当我运行这段代码时,我得到一个无休止的
流0x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d300x600d30
在终端上。
为什么会这样?为什么这些程序的行为不同?
【问题讨论】:
-
你是如何让
cout << cin编译的? -
我没有看到这个compiling
-
@scohe001 ideone.com/zRMP7G 完美编译
-
我在 linux mint debian 版上使用 g++ 4.8.2。我没有使用任何标志,只是(g++ example.cpp -o example)。
-
@scohe001 我只选择“C++”,而你选择“C++14”。不知道这种特殊情况有什么区别。