C++ istream::ignore() 函数



C++ 的std::istream::ignore()函数用于跳过或忽略输入流中的字符。它常用于清除不需要的字符或处理读取预期数据后包含额外字符的输入。

如果指定了字符数或分隔符,它将跳过这么多字符,或者直到遇到分隔符为止。

语法

以下是std::istream::ignore()函数的语法。

istream& ignore (streamsize n = 1, int delim = EOF);

参数

  • n − 表示要提取的最大字符数。
  • delim − 表示分隔符字符。

返回值

此函数返回 basic_istream 对象 (*this)。

异常

如果抛出异常,则对象处于有效状态。

数据竞争

修改流对象。

示例

让我们看下面的例子,我们将跳过固定数量的字符。

#include <iostream>
#include <sstream>
int main()
{
    std::istringstream x("ABTutorialsPoint.");
    x.ignore(2);
    std::string y;
    std::getline(x, y);
    std::cout << "Result :  " << y << std::endl;
    return 0;
}

输出

上述代码的输出如下:

Result :  TutorialsPoint.

示例

考虑下面的例子,我们将使用ignore()函数跳过数字之间的空格。

#include <iostream>
#include <sstream>
int main()
{
    std::istringstream x("11 12 23");
    int a, b, c;
    x >> a;
    x.ignore();
    x >> b;
    x.ignore();
    x >> c;
    std::cout << "Result : " << a << ", " << b << ", " << c << std::endl;
    return 0;
}

输出

以下是上述代码的输出:

Result : 11, 12, 23

示例

在下面的例子中,我们将跳过字符,直到找到分隔符。

#include <iostream>
#include <sstream>
int main()
{
    std::istringstream x("11,23,34");
    x.ignore(11, ',');
    std::string a;
    std::getline(x, a, ',');
    std::cout << "Result : " << a << std::endl;
    return 0;
}

输出

如果我们运行上述代码,它将生成以下输出:

Result : 23
istream.htm
广告