std::basic_istream<CharT,Traits>::ignore
< cpp | io | basic istream
basic_istream& ignore( std::streamsize count = 1, int_type delim = Traits::eof() ); |
||
从输入流释出并舍弃字符,直至并包含 delim
。
ignore
表现为无格式输入函数 (UnformattedInputFunction) 。构造并检查 sentry 对象后,它从流释出并舍弃字符,直至出现任一下列条件:
- 已释出
count
个字符。在count
等于 std::numeric_limits<std::streamsize>::max() 的特殊情况下禁用此测试。
- 输入序列中出现文件尾条件,该情况下函数调用 setstate(eofbit) 。
- 输入序列中下个可用字符
c
为delim
,以 Traits::eq_int_type(Traits::to_int_type(c), delim) 确定。释出并舍弃分隔符。若 Traits::eof() 为则禁用此测试。
参数
count | - | 要释出的字符数 |
delim | - | 释出所止于的分隔字符。亦释出之。 |
返回值
*this
异常
若内部操作抛出异常,则捕获它并设置 badbit 。若对 badbit
设置了 exceptions() ,则重抛该异常。
示例
下列代码用 ignore
跳过非数值输入:
运行此代码
#include <iostream> #include <sstream> #include <limits> int main() { std::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(); // 反设置 failbit input.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 跳过坏输入 } else { std::cout << n << '\n'; } } }
输出:
1 2
参阅
从流中读并取走(移除类似指针向下一个元素移动)一个字符 (公开成员函数) | |
一直读并取走字符,直至找到给定字符 (公开成员函数) |