Z
ZHANK
编程在线教程C++ 教程字符串流 stringstream
数组与字符串

字符串流 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"