cin.ignore的用法

来源:互联网 发布:文明4 mac 汉化 编辑:程序博客网 时间:2024/06/05 21:49

basic_istream& ignore( std::streamsize count = 1, int_type delim = Traits::eof() );

从输入流中取出并丢弃字符,直到遇到delim(丢弃的字符包含了delim)

ignore就如一个不合法的输入函数,从流中提取字符,直到下面三种情况中的一个就退出:

1、count个字符提取出来。当count等于std::numeric_limits<std::streamsize>::max()时这种情况就很难出现

2、遇到文件结束符,这种情况下会调用setstate(eofbit)

3、输入序列中的下一个字符是delim,通过Traits::eq_int_type(Traits::to_int_type(c), delim)。delimiter也会提取丢弃。当delim为Traits::eof()时,这种情况不会发生

#include <iostream>#include <sstream>#include <limits>using namespace std;int main(){istringstream input("1\n""some non-numeric input\n""2\n");for (; ;) {int n;input >> n;if (input.eof() || input.bad()) {break;} else if (input.fail()) {input.clear();input.ignore(numeric_limits<streamsize>::max(), '\n');} else {cout << n << '\n';}}return 0;}

输出为:

12



0 0
原创粉丝点击