【发布时间】:2023-03-17 19:37:01
【问题描述】:
这是一个逐字符读取输入的程序,并以同样的方式打印出来。我在这里遇到的概念疑问是,即使在每次输入每个字符的迭代中都使用了 std::cout ,如何仅在按下 ENTER 键时才显示完整的字符串?
int main()
{
char c;
while(1)
{
c = cin.get();
if(cin.eof())
break;
else cout << c;
}
return 0;
}
【问题讨论】:
-
不要用 C 标签标记 C++ 问题;这两种语言完全不同。
-
您可能使用的是行缓冲终端,在您按下回车之前不会将输入数据发送到您的应用程序
-
std::cout 是一个流,在读取换行符之前它可能不会刷新。您可以使用 std::flush 强制刷新
-
终端驱动程序不会让任何字符进入程序,直到您按回车键。阅读Canonical vs non-canonical terminal input。
标签: c++