【STL】ostringstream, istringstream, stringstream

16 篇文章 0 订阅

1. ostringstream: 可以理解为将输出重定向至 ostringstream 对象(内存区域)
2. istringstream: 可以理解为将输入重定向至 istringstream 对象(内存区域)
3. stringstream: stringstream 的内存区域即可接受输入也可输出


1. ostringstream

多次使用 ostringstream 对象时的注意事项

#include <iostream>
#include <sstream>
#include <string>
using namespace std;

int main ()
{
    ostringstream oss;
    oss << 3.1415926;
    cout  << oss.str() << endl;

    oss << 10000;
    cout << oss.str() << endl;

    // 【1】清空 ostringstream 的方法
    oss.str("");    // 正确的清空方法
    // oss.clear()  // 错误的清空方法
    oss << 20000;
    cout << oss.str() << endl;

    return 0;
}


2. istringstream

多次使用 istringstream 对象时的注意事项

#include <iostream>
#include <sstream>
#include <string>
using namespace std;

int main ()
{
    string stringvalues1 = "125";
    string stringvalues2 = "250";
    istringstream iss;
    string stringtest;

    iss.str(stringvalues1);
    cout << iss.str() << endl;
    iss >> stringtest;
    cout << stringtest << endl;

    iss.clear();
    iss.str(stringvalues2);
    cout << iss.str() << endl;
    iss >> stringtest;	// 【1】 如果不调用 clear(), stringtest 还是 125
    cout << stringtest << endl;

    return 0;
}

3. stringstream

#include <iostream>
#include <sstream>
#include <string>
using namespace std;

int main ()
{
    /*
     * stringstream
     * stringstream 的内存区域即可接受输入也可接受输出
     */
    stringstream ss;
    string  strTmp;
    int     iTmp;
    ss << "ccc 333 ddd 444";
    while(ss >> strTmp >> iTmp)
    {
        cout << strTmp << "-" << iTmp << endl;
    }

    // 【1】 关于 C++ 的 I/O 还有很多没有了解的,下面的结果就很奇怪
    ss.str("");
    ss.clear();
    ss >> strTmp >> iTmp;
    cout << strTmp << "-" << iTmp << endl;  // ddd-444

    return 0;
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值