字符串流 stringstream
istringstream/ostringstream 格式化、分割字符串、类型转换
字符串流 stringstream
<sstream> 把字符串当流来读写——格式化、分割、类型转换三合一。
学完本章你将: 掌握 ostringstream 格式化 / istringstream 解析 / 类型转换。
ostringstream —— 字符串拼接利器
cpp
#include <iostream>
#include <sstream>
int main() {
std::ostringstream oss;
oss << "姓名:" << "小明"
<< ",年龄:" << 25
<< ",成绩:" << std::fixed << std::setprecision(1) << 92.5;
std::string result = oss.str();
std::cout << result << "\n";
// 姓名:小明,年龄:25,成绩:92.5
return 0;
}
💡 需要拼接大量字符串时,
ostringstream比+拼接高效得多。
istringstream —— 解析字符串
cpp
#include <iostream>
#include <sstream>
int main() {
std::string data = "42 3.14 hello";
std::istringstream iss(data);
int i; double d; std::string s;
iss >> i >> d >> s;
std::cout << i << " " << d << " " << s << "\n";
// 42 3.14 hello
return 0;
}
逗号分隔字符串解析
cpp
#include <sstream>
std::string csv = "apple,banana,cherry";
std::istringstream iss(csv);
std::string token;
while (std::getline(iss, token, ',')) {
std::cout << "[" << token << "]\n";
}
// [apple] [banana] [cherry]
任意类型 → 字符串
cpp
template <typename T>
std::string toString(const T &value) {
std::ostringstream oss;
oss << value;
return oss.str();
}
// toString(42) → "42"
// toString(3.14) → "3.14"