如何从cin中清除多余的字符?

时间:2011-06-26 19:11:53

标签: c++ iostream

char buff[3];

cout<<"From: ";
cin.getline(buff, 3);

//something something

cout<<"To: ";
cin.getline(buff, 3);

如何在评论中清除缓冲区,以便额外的字符不会转到我的第二个cin

3 个答案:

答案 0 :(得分:5)

一种方法是使用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读取所有字符,直到换行符。

答案 1 :(得分:0)

答案 2 :(得分:0)

#import<string.h>

memset(buf, 0, 3);

这将用零填充缓冲区。