C++ 字符串输入输出流

文章介绍了C++中用于处理字符串的sstream库,包括istringstream用于从string读取数据,ostringstream用于向string写入数据,以及stringstream的双向功能。通过示例展示了如何使用这些流对象读取和写入字符串,例如从输入提取单词并存储到vector,以及组合输出单词及其长度。
摘要由CSDN通过智能技术生成

        string流可以向string类对象写入数据,也可以向string类对象读取数据。string流对象定义在sstream头文件中,其中的istringstream从string对象读取数据,ostringstream向string对象写入数据,stringstream既可以向string对象写入数据,也可以从string对象读数据。

1)istringstream流

        当从设备(如键盘或硬盘文件)读取一行文本时,往往需要对整行文本中的单个单词进行处理,这时可以使用istringstream流对象。比如,需要获取一行文本中的所有单词,并把它存放到一个vector里,为后续的单词处理工作做准备。

vector <string> wds;    //保存读取的单词
string line, word;
/*利用getline获取一行文本,如果获取成功(getline函数返回有效的cin),则将整行文本的副本保存到
istringstream对象iss中。然后通过调用输入运算符号>>逐个获取iss中的每一个单词,并把获得的单词
放到vector类型对象wds中。
需要注意的是,在读完line中的所有单词后,会触发文件结束信息,使iss变为无效状态,内层while循环
会结束。*/
while(getline(cin, line)) {
    istringstream iss(line);    //创建输入string流对象,保存line的一个副本
    while(iss >> word) //读取每个单词
        wds.push_back(word); //将读取的单词尾插到wds中
}

2)ostringstream流

        当需要一次打印不同数据类型的数据时,使用ostreamstream流可以很容易实现。比如,在上面的例子中,在获取所有的单词后,一次性输出每个单词和它们的长度:

ostringstring out;    //创建string流对象
for (auto &i : wds)    //处理每一个单词
    out << i << ":" << i.length() << '\n';    //将数据写入输出流对象中
/*对象out的成员函数str返回存储的string类型数据。注意,ostringstream的另一个版本的成员函数
str接受一个string类型的参数,用来覆盖原有的数据,例如out.str('')调用后,out里面的数据将被
清空*/
cout << out.str();    //打印输出

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张帅峰_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值