需要帮助理解cin缓冲区的行为
need help understanding cin buffer behavior
下面的代码显示了
的输出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;
}
为什么不显示输入的第一个字符?我知道我可以使用
强制它忽略第一个字符后面的cin缓冲区 cin.ignore(1,'n')
但是它不应该只准备一个字符而忽略其余的吗?
…但是它不应该只准备一个字符而忽略其他字符吗?
。它工作正常,我不知道你从哪里得到的想法,它应该忽略一些东西。它读取缓冲区中的所有内容,并在缓冲区为空时阻塞等待更多输入。在您的示例中,它仅在while循环的三次迭代之后变为空。
您的代码显示为while (cin >> c) doStuff
。也就是说:只要有文字要读,就做东西。这个程序就是这么做的。你是说if (cin >> c)
吗?
cin只能在按下RETURN键后处理来自键盘的输入。while循环继续执行该操作,直到依次打印cin缓冲区中的所有字符。
程序的行为
相关文章:
- C++字符*缓冲区的大小
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- C++中的cin.ignore()函数不适用于整个流
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- ostream过载时的缓冲区冲洗
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- istream std::cin如何修改自定义istream缓冲区
- C++ - 有什么方法可以将输入插入缓冲区/停止 cin.忽略需要输入?
- 如何从缓冲区x cin x次数
- 如何检查 cin 缓冲区是否包含相同的值 0.5 秒 (C++)
- 我可以做一个循环,直到“std::cin”在输入缓冲区中看到“”字符
- C++如何检查std::cin缓冲区是否为空
- cin.clear() 如何清除输入缓冲区
- 为什么我的编译器在尝试清除 CIN 缓冲区时抱怨
- 使用GetAsyncKeyState()时,C++正在清除cin缓冲区
- 对于std::cin缓冲区是否有大小限制?
- cin.get()缓冲区中的左换行字符
- 使用cin对象进行输入验证并清除缓冲区(c++)
- 需要帮助理解cin缓冲区的行为