C++ 的 iostream 输入输出流很好用,而它也有两个兄弟:fstream 和 sstream (或 stringstream),三个的用法差不多,能够触类旁通,就很舒服。本文就介绍一下 stringstream 和 iostream 的相同和不同的地方。
iostream 和 stringstream 的继承关系
iostream 和 stringstream
引入头文件和定义变量
1 |
|
其中,istringstream 用于流的输入,ostringstream 用于流的输出,stringstream 用于流的输入输出。具体的区别在下面提到。
istringstream 使用方法
cin 是从控制台读取数字、字符串,而 istringstream 就是从指定的字符串中读取数字、字符串。
首先指定 istringstream 读取的源字符串。下两种形式是等价的:
1 | istringstream istr1; |
然后用类似于 cin 的语法就可以从该字符串读取数字等了。
1 | int a; |
ostringstream 使用方法
cout 是把内容往屏幕上输出,而 ostringstream 就是把内容往字符串输出。
ostringstream 是先读入数字等内容到该 ostringstream,然后获取该 ostringstream 中存的字符串。
1 | ostr << a << b;//a==12, b==3.1415 |
读取 ostringstream 中的字符串需要使用成员函数 str()。
1 | cout << ostr.str() <<endl; |
成员函数 str() 返回一个 string。搭配头文件 string 就可以使用 string 类的各种功能。
注意该函数也可以在 istringstream 和 stringstream 中使用,同样是获取流中存储的字符串。
ostringstream 同样可以赋初值,但是在进行输入的时候,输入的东西会先修改初值的对应部分,输出超过原长的那一部分才会追加到串的后面。
1 | ostringstream ostr("abc"); |
上面这段代码输出:
1 | dec |
stringstream 使用方法
stringstream 就可以同时进行输入和输出了。(但是好像用的不多,故略)