char buff[3];
cout<<"From: ";
cin.getline(buff, 3);
//something something
cout<<"To: ";
cin.getline(buff, 3);
我如何清除注释缓冲区,这样多余的字符就不会进入我的第二个 cin
?
最佳答案
一种方法是使用istream::ignore
:
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
这将跳过最大可能的字符数,直到读取换行符。
不过,就其值(value)而言,您可能不应该使用 istream::getline
,因为它适用于原始 C 风格字符串。更好的选择是使用 std::string
和免费函数 std::getline
:
std::string buffer;
getline(cin, buffer);
这将自动读取 stdin
中的所有字符,直到换行为止。
关于c++ - 如何清除 cin 中的无关字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6486113/