std::basic_istream::ignore

来自cppreference.com
< cpp‎ | io‎ | basic istream
basic_istream& ignore( std::streamsize count = 1, int_type delim = Traits::eof() );

从输入流释出并舍弃字符,直至并包含 delim

ignore 表现为无格式输入函数 (UnformattedInputFunction) 。构造并检查 sentry 对阿宁后,它从流释出并舍弃字符,直至出现任一下列条件:

  • 输入序列中出现文件尾条件,该情况下函数调用 setstate(eofbit)
  • 输入序列中下个可用字符 cdelim ,以 Traits::eq_int_type(Traits::to_int_type(c), delim) 确定。释出并舍弃分隔符。若 Traits::eof() 为则禁用此测试。

目录

[编辑] 参数

count - 要释出的字符数
delim - 释出所止于的分隔字符。亦释出之。

[编辑] 返回值

*this

[编辑] 异常

若出现错误(错误状态标志不是 goodbit )并且设置了 exceptions() 为对该状态抛出则为 failure

若内部操作抛出异常,则捕获它并设置 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

[编辑] 参阅

释出字符
(公开成员函数) [编辑]
释出字符,直至找到给定字符
(公开成员函数) [编辑]