以下代码将输出显示为
enter something abc you entered: a you entered: b you entered: c
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char c;
while(cin>>c)
{
//Do something
cout<<"you entered: "<<c<<"\n";
}
return 0;
}
为什么不显示输入的第一个字符?我知道我可以通过使用
强制它在第一个char之后忽略cin缓冲区 cin.ignore(1,'\n')
但它不应该只准备一个角色并忽略其余角色吗?
答案 0 :(得分:0)
您的代码显示while (cin >> c) doStuff
。那就是:只要有要读取的字符,doStuff。所以该计划正是这样做的。你的意思是if (cin >> c)
吗?
答案 1 :(得分:0)
...但是它不应该只准备一个角色并忽略其余角色吗?
没有。它工作正常,我不知道你在哪里认为它应该忽略一些东西。它读取缓冲区中的任何内容,如果缓冲区为空,则阻塞等待更多输入。在你的情况下,它只在while循环的三次迭代后变空。
答案 2 :(得分:0)
cin只能在按下RETURN键后处理来自键盘的输入。 while循环继续操作,直到cin缓冲区中的所有字符逐个打印。
程序也是如此。