在 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;
}
运行截图如下: