std::istringstream 是 C 标准库中的一个输入流类用于从字符串中读取数据。它提供了类似于 std::cin 的接口可以方便地从字符串中提取数据并将其转换为不同的数据类型。目录1. 需要包含头文件2. 创建 std::istringstream 对象并初始化3. 从 std::istringstream 中提取数据4. 检查提取是否成功5. 关闭 std::istringstream 对象可选6. 设置精度和格式7. 跳过特定字符8. 分割字符串9. 检查流状态10. 转换为其他数据类型11. 重复使用1. 需要包含头文件#include sstream2. 创建 std::istringstream 对象并初始化std::string str 123 4.56 hello;std::istringstream iss(str);3. 从 std::istringstream 中提取数据使用 操作符可以从 std::istringstream 中提取数据就像从 std::cin 中读取数据一样。可以按照需要提取不同类型的数据比如整数、浮点数、字符串等。int num;float fnum;std::string word;iss num fnum word;4. 检查提取是否成功在提取数据后通常可以通过检查 std::istringstream 的状态来确保数据提取成功。if (iss.fail()) {// 数据提取失败可能是类型转换错误或数据不匹配} else {// 数据提取成功}5. 关闭 std::istringstream 对象可选在使用完 std::istringstream 后可以选择关闭对象。iss.str(); // 清空缓冲区iss.clear(); // 清除状态标志6. 设置精度和格式可以使用 std::setprecision、std::fixed、std::scientific 等控制符来设置提取浮点数时的精度和格式。iss std::setprecision(2) std::fixed fnum;std::setprecision(2)指定了将浮点数转换为字符串时保留两位小数。当使用std::fixed后浮点数将以固定的小数位数进行输出不会自动切换为科学计数法fnum是一个浮点数变量用于存储从std::istringstream中提取的数据。7. 跳过特定字符可以使用 std::getline 函数跳过特定字符比如空格、逗号等。std::string temp;getline(iss, temp, ,); // 在遇到逗号之前的所有内容都会被读取到 temp 中8. 分割字符串以:分割字符串strstring str sss:werf:erqef:eraefqef;istringstream iss(str);string tostr;vectorstring strvec;while (getline(iss, tostr, :)){strvec.push_back(tostr);}9. 检查流状态可以使用 good()、eof()、fail()、bad() 等函数来检查流的状态以确保数据提取的正确性。if (!iss.good()) {// 处理流错误}10. 转换为其他数据类型可以将提取的数据转换为其他数据类型比如将字符串转换为整数、浮点数等。std::string numStr 42;int num 0;iss.str(numStr);iss num;11. 重复使用可以重复使用同一个 std::istringstream 对象来提取不同部分的数据。std::string str apple orange banana;iss.str(str);std::string fruit;while (iss fruit) {// 依次提取每个}