sstream 定义了三个类:istringstream、ostringstream 和 stringstream 分别用来进行流的输入、输出和输入输出操作。
字符串拼接
std::stringstream ss;
//如果只有输入/输出,则使用单向stringstream
//std::ostringstream ss;
ss << "Happy " << "NewYear";
ss << " 2023!";
//result = "Happy NewYear 2023!"
std::string result = ss.str();
类型转换
- 任意数值类型转换为 string
template<class Number>
std::string to_string(Number num) {
std::ostringstream ss;
ss << num;
return ss.str();
}
void main(){
//value1 = "1"
std::string value1 = to_string(1);
//value2 = "1.3"
std::string value2 = to_string(1.3f);
}
- string 类型转换为任意类型
template<class Number>
Number from_string(std::string str) {
Number result;
std::istringstream ss(str);
ss >> result;
return result;
}
void main(){
//value1 = 1
int value1 = from_string<int>("1");
//value2 = 1.300000
float value2 = from_string<float>("1.3");
//value3 = 0.000000
float value3 = from_string<float>("Happy");
}
strstream头文件
- 头文件用于C风格的字符串,即 char* 这种风格,已被弃用,不建议使用
- 头文件用于C++风格的字符串,即 std::string 这种风格
注意
- 多次转换中重复使用同一个 stringstream(而不是每次都创建一个新的对象),在每次转换前使用
clear()
方法