我不确定std::cin
实际上如何从流中获取输入。
例如,我的代码:
#include <iostream>
int main()
{
std::cout<<"Pick 1 or 2: ";
int choice;
std::cin>>choice;
//std::cin.ignore(32767,'\n');
std::cout<<"Now enter your name: ";
std::string name;
std::getline(std::cin,name);
std::cout<<"Hello, "<<name<<", you picked "<<choice <<'\n';
return 0;
}
当我注释掉std :: cin.ignore时,控制台会打印“Pick 1 or 2:”,我输入1并跳过等待我输入我的名字。相反,我看到“你好,你选了1个选择”。
实际上,cin甚至会在流中取空字符,我想知道吗?
答案 0 :(得分:0)
当您使用cin输入内容并按Enter键时,&#39; \ n&#39; char进入cin缓冲区。因此,要清除此缓冲区,您可以使用std::cin.ignore(32767,'\n')
,这应该清除缓冲区中所需的字符串。