我运行了这段代码
char c;
cin >> c;
cout << c;
cin >> c;
cout << c;
并写入控制台 ab
,按下回车键。所以我在下一行得到了 ab
。但我无法理解它是如何工作的。在按下回车之前,程序什么都没有读,对吧? After pressing, it reads a
, save it to char c
, then reads char c
, writes a
to the console.没关系。但它怎么能读到 b
在第二行?第二行不是 b
原文由 Pavel 发布,翻译遵循 CC BY-SA 4.0 许可协议
cin 是一个阻塞输入。来自键盘的任何内容都存储在缓冲区中。当您按下回车键时,系统会将缓冲区传递给应用程序代码(std::cin 代码)。运算符 >> 将决定从该缓冲区读取多少 - 一个 char、string、int、float 等。取决于操作数的类型。