c++ - 如何清除 cin 中的无关字符?

标签 c++ iostream

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/

相关文章:

c++ - 常量和重载构造函数

c++ - 在模板中实例化模板对象

c++ - Protobuf vs Flatbuffers vs Cap'n proto哪个更快?

c++ - 程序在每次运行时生成相同的随机数?

c++ - namespace 检测

c++ - 流 cout 设置标志 std::ios_base::skipws 有什么原因吗?

类中的c++回调语法

c++ - C++ 流是如何工作的?

c++ - 如何在 C++ 中使用 asio.boost 修改 Web 上文件的内容?

c++ - 告诉 `endl` 不要刷新