C++ istream::operator>>() 函数



C++ 的std::istream::operator>>()函数是一个提取运算符,用于将格式化数据从字符串流对象读取到变量中。它的工作方式类似于与std::cin一起使用的>>运算符,但它从字符串缓冲区中提取数据。

此函数有 3 个多态变体:使用算术类型或流缓冲区或操纵器(您可以在下面找到所有变体的语法)。

语法

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

istream& operator>> (bool& val);
istream& operator>> (short& val);
istream& operator>> (unsigned short& val);
istream& operator>> (int& val);
istream& operator>> (unsigned int& val);
istream& operator>> (long& val);
istream& operator>> (unsigned long& val);
istream& operator>> (long long& val);
istream& operator>> (unsigned long long& val);
istream& operator>> (float& val);
istream& operator>> (double& val);
istream& operator>> (long double& val);
istream& operator>> (void*& val);
or
istream& operator>> (streambuf* sb );
or
istream& operator>> (istream& (*pf)(istream&));
istream& operator>> (ios& (*pf)(ios&));
istream& operator>> (ios_base& (*pf)(ios_base&));

参数

  • val - 它指示存储提取的字符所表示的值的对象。
  • sb - 它指示指向 basic_streambuf 对象的指针,字符将复制到其控制的输出序列上。
  • pf - 它指示一个函数,该函数获取并返回一个流对象。

返回值

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

异常

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

数据竞争

修改 val 或 sb 指向的对象。

示例

让我们看下面的例子,我们将读取单个整数。

#include <iostream>
#include <sstream>
#include <string>
int main()
{
    std::string a = "11";
    std::stringstream b(a);
    int x;
    b >> x;
    std::cout << "Result : " << x << std::endl;
    return 0;
}

输出

以上代码的输出如下:

Result : 11

示例

考虑下面的例子,我们将读取多个数据类型。

#include <iostream>
#include <sstream>
#include <string>
int main()
{
    std::string a = "11 2.3 TutorialsPoint";
    std::stringstream b(a);
    int x;
    float y;
    std::string z;
    b >> x >> y >> z;
    std::cout << "x : " << x << ", y : " << y << ", z : " << z << std::endl;
    return 0;
}

输出

以下是以上代码的输出:

x : 11, y : 2.3, z : TutorialsPoint

示例

在下面的示例中,我们将读取整数列表。

#include <iostream>
#include <sstream>
#include <string>
#include <vector>
int main()
{
    std::string x = "1 2 3 4 5";
    std::stringstream y(x);
    std::vector<int> a;
    int b;
    while (y >> b) {
        a.push_back(b);
    }
    std::cout << "Result :";
    for (int n : a) {
        std::cout << " " << n;
    }
    std::cout << std::endl;
    return 0;
}

输出

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

Result : 1 2 3 4 5
istream.htm
广告