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;
}
结果输出: