如何从cin中清除无关字符

How do I flush extraneous characters from cin?

本文关键字:字符 清除 cin      更新时间:2023-10-16
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');

这将跳过最大可能的字符数,直到读取换行符为止。

不过,就其价值而言,您可能不应该使用istream::getline,因为它可以处理原始C样式字符串。更好的选择是使用std::string和自由函数std::getline:

std::string buffer;
getline(cin, buffer);

这将自动读取stdin中的所有字符,直到换行为止。

看看istream::ignore

#import<string.h>
memset(buf, 0, 3);

这将用零填充缓冲区。