深入解析 C++ 中的 ostringstream、istringstream 和 stringstream 用法

引言:
在 C++ 中,ostringstream、istringstream 和 stringstream 是三个非常有用的字符串流类,它们允许我们以流的方式处理字符串数据。本文将深入探讨这三个类的用法和特性,帮助读者更好地理解和应用字符串流操作。

1. ostringstream(输出字符串流)#

ostringstream 是 C++ 中用于输出字符串的流类。它继承自 ostream,可以将各种数据类型输出到一个字符串中,方便地构造字符串。

使用方法:#

#include <sstream>
#include <iostream>

int main() {
    std::ostringstream oss;
    int num = 42;
    double pi = 3.14159;

    // 向 ostringstream 中输出数据
    oss << "The answer is: " << num << ", and the value of pi is: " << pi;

    // 获取 ostringstream 的内容(字符串)
    std::string result = oss.str();

    // 输出结果
    std::cout << result << std::endl;

    return 0;
}

输出结果:

The answer is: 42, and the value of pi is: 3.14159

2. istringstream(输入字符串流)#

istringstream 是 C++ 中用于输入字符串的流类。它继承自 istream,可以将一个字符串解析成各种数据类型,方便地从字符串中读取数据。

使用方法:#

#include <sstream>
#include <iostream>

int main() {
    std::string data = "John 25 3.14";
    std::istringstream iss(data);

    std::string name;
    int age;
    double pi;

    // 从 istringstream 中读取数据
    iss >> name >> age >> pi;

    // 输出结果
    std::cout << "Name: " << name << std::endl;
    std::cout << "Age: " << age << std::endl;
    std::cout << "Value of pi: " << pi << std::endl;

    return 0;
}

输出结果:

Name: John
Age: 25
Value of pi: 3.14

3. stringstream(输入输出字符串流)#

stringstream 是 C++ 中同时支持输入和输出的字符串流类。它继承自 iostream,可以将各种数据类型输出到一个字符串中,也可以从一个字符串中读取数据。

使用方法:#

#include <sstream>
#include <iostream>

int main() {
    std::stringstream ss;
    int num = 42;
    double pi = 3.14159;

    // 向 stringstream 中输出数据
    ss << "The answer is: " << num << ", and the value of pi is: " << pi;

    // 获取 stringstream 的内容(字符串)
    std::string result = ss.str();

    // 输出结果
    std::cout << result << std::endl;

    // 清空 stringstream
    ss.str("");
    ss.clear();

    // 从一个字符串中读取数据
    std::string data = "John 25 3.14";
    ss << data;

    std::string name;
    int age;
    double value;

    // 从 stringstream 中读取数据
    ss >> name >> age >> value;

    // 输出结果
    std::cout << "Name: " << name << std::endl;
    std::cout << "Age: " << age << std::endl;
    std::cout << "Value: " << value << std::endl;

    return 0;
}

输出结果:

The answer is: 42, and the value of pi is: 3.14159
Name: John
Age: 25
Value: 3.14

总结#

ostringstream、istringstream 和 stringstream 是 C++ 中非常有用的字符串流类,它们分别用于输出、输入和同时输入输出字符串。通过使用这些类,我们可以更方便地处理字符串数据,以及实现数据类型和字符串之间的转换。在实际编程中,可以根据具体需求选择合适的字符串流类来简化代码的实现。

参考资料#

  1. C++ Reference: std::ostringstream. https://en.cppreference.com/w/cpp/io/basic_ostringstream
  2. C++ Reference: std::istringstream. https://en.cppreference.com/w/cpp/io/basic_istringstream
  3. C++ Reference: std::stringstream. https://en.cppreference.com/w/cpp/io/basic_stringstream
  4. GeeksforGeeks: C++ stringstream, ostringstream and istringstream. https://www.geeksforgeeks.org/cpp-stringstream-istringstream-and-ostringstream/

作者:keep--fighting

出处:https://www.cnblogs.com/keep--fighting/p/17563552.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   ⭐⭐-fighting⭐⭐  阅读(2642)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示