在 C++ 中,std::stringstream 类可以用来进行字符串流的输入输出,将字符串和其他类型的数据进行转换。
#include <iostream>
#include <sstream>int main() {// 将整数转换为字符串int num = 123;std::stringstream ss;ss << num;std::string numStr = ss.str();std::cout << "Integer to String: " << numStr << "\n";// 将字符串转换为整数std::string str = "456";int parsedNum;ss.clear(); // 重置状态ss.str(str); // 设置要解析的字符串ss >> parsedNum;std::cout << "String to Integer: " << parsedNum << "\n";return 0;
}
在实际项目中,这个在读取文件时,赋值给结构体用得比较多,如下例子:
#include <iostream>
#include <sstream>
#include <string>using namespace std;struct RecvStruct {string stringVal1;string stringVal2;int intVal1;float floatVal1;
};std::ostream & operator<<(std::ostream& os, const RecvStruct& r) {os << r.floatVal1 << " " << r.intVal1 << " " << r.stringVal1 << " " << r.stringVal2 << endl;return os;
}int main() {// 格式化赋值string rowLine = "IT1995 AAAA 110 268.11 570176391@qq.com www.it1995.cn";stringstream ss(rowLine);string notUse;RecvStruct *recvStruct = new RecvStruct();ss >> recvStruct->stringVal1 >> notUse >> recvStruct->intVal1>> recvStruct->floatVal1 >> recvStruct->stringVal2 >> notUse;cout << *recvStruct << endl;delete recvStruct;getchar();return 0;
}
运行截图如下: