C++常用语法知识-- std::istringstream

发布时间 2023-10-24 09:58:41作者: Bonne_chance

C++常用语法知识-- std::istringstream

  • 介绍
    std::istringstream是C++标准库中的一个类,它用于从字符串中提取数据,并将数据转换为不同的数据类型。通常从字符串中解析数据,例如整数、浮点数等。

  • 使用方法

    • 创建std::istringstream对象,首先,需要创建一个std::istringstream对象,将要解析的字符串传递给它。例如std:istringstream iss("123 45.6"),创建一个用于解析字符串“123 45.6”的iss对象。
    • 使用输入操作符>>提取数据:可以使用>>操作符从std::istringstream对象中提取数据,并将其存储在变量中。例如 int num;iss>>num;将尝试从iss中提取一个整数,并将其存储在num中,如果提取成功,num将包含提取的整数值,如果提取失败,num不会改变.
    • 检查提取是否成功:你可以检查提取操作的成功与否,通常使用条件语句。例如:if(iss>>num);如果提取成功,将返回true;否则返回false。这允许提取结果进行不同操作。
    • 多次提取:可以多次使用>>操作符来从同一个std::istringstream对象中提取不同类型的数据。例如,可以提取整数、浮点数、字符串等。
    • 清除std::istringstream:可以使用iss.clear()来清除std::istringstream的错误状态,以便重新使用它,这通常在想要从同一个std::istringstream对象中提取不同类型的数据时非常有用。
  • 实例

// istringstream::str
#include <string>       // std::string
#include <iostream>     // std::cout
#include <sstream>      // std::istringstream

int main () {
  std::istringstream iss;
  std::string strvalues = "32 240 2 1450";

  iss.str (strvalues);

  for (int n=0; n<4; n++)
  {
    int val;
    iss >> val;
    std::cout << val << '\n';
  }
  std::cout << "Finished writing the numbers in: ";
  std::cout << iss.str() << '\n';
  return 0;
}

结果输出: