C++ primer -IO库-sstream

本文介绍了C++中的fstream和sstream类,重点讲解了istringstream和ostringstream的内存读写功能,以及如何使用它们进行字符串分割和合并,同时提到了循环中stringstream的高效使用策略。
摘要由CSDN通过智能技术生成

 对于fstream和sstream,它们继承了iostream,因此接口支持iostream时,也支持使用fstream和sstream。

sstream,定义了读写内存string对象的类型

sstream头文件,定义了三个类型来支持内存I/O:

1、istringstream :从string读入数据,

2、ostringstream:向string写入数据;

3、stringstream:既可以从string读取数据,也可以向string写入数据。

以下是sstream支持的操作:

sstream strm; // 创建了一个未绑定string内存的sstream对象

sstream strm(s); // 创建了一个绑定到string对象s 的sstream对象

strm.str(); // 返回strm所保存的string拷贝

strm.str(s); // 将string s绑定到strm中,返回void

使用istringstream可以将一个string对象按空格分隔后依次输入到其他string对象中:

因此istringstream对象的常用操作如下:使用getline读入一行到string对象line中,用line初始化一个istringstream对象record,对record使用>>运算符,将string内存中的对象按空格读出,实现了读入多行并按空格分隔后输出。

使用ostringstream对象可以读入多个对象,存在缓冲区中,再合并输入到一个string对象中(去除了空格):

ostringstream os;

// 输入的内容是1 2 3 4 5

while(cin >> s) os << s;

string str = os.str(); // str的内容是12345,去除了空格。

对于在循环中使用stringstream类型,建议使用clear清除内容后重新使用,而不是重新申请,因为stringstream的创建性能较差。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值