很多介绍是这么写的
在程序设计中,数据输入/输出(I/O)操作是必不可少的,C++ 语言的数据输入/输出操作是通过I/O流库来实现的。C++中把数据之间的传输操作称为流,流既可以表示数据从内存传送到某个载体或设备中,即输出流,也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。
我觉得,如果经常写涉及输入输出,比如文件操作,字符串和数据读取,那么理解“流”的概念是自然而然的。C语言中对流的操作似乎并不方便。
C++中分为4种,输入 输出 文件 (字符)串流
我感觉最有利于工程处理的,就是提供了一个好用的临时处理区。比如从键盘输入后,能够保存到一个字符串流中,进行某些操作后再从字符串流中将数据导入到该去的地方。这样的设计能够避免需要用户刻意按照某些特定的输入顺序输入。
举个栗子:
#include<sstream>
#include<string>
using namespace std;
int main()
{
int a = 42;
double b = 234562879527;
string integer;
ostringstream JKL;
JKL << a << " : " << b;
integer = JKL.str();
cout << integer << endl;
return 0;
}
是不是很方便!调用ostringstream::str()函数,把保存在串流中的数字转成字符串输出了。流在这里就起到了一个类似案板的作用。
值得一提的是,想要清空流中的数据,stringstream::clear()的作用是把案板空着的地方挪到跟前,实际上没有释放占用的内存(它并不清空任何内容,它只是重置了流的状态标志而已);而在stringstream::str()函数里写上引号: str(“”) 的形式,能强制将流赋值为空。
但能说stringstream::clear()没用吗?其实它的作用是重置了状态标志,让这个流表示自己是新的,可以往里塞其他类型的数据。这时候,用str(“”)都不能起作用。
#include<sstream>
#include<string>
using namespace std;
int main()
{
stringstream sstream;
int first, second;
//把string转成int
sstream << "456";
sstream >> first;
cout << first << endl;
//您可以把下一行注释掉后再试一次
sstream.clear();
sstream << true;
sstream >> second;
cout << second << endl;
return 0;
}
更多的用法还等待着人民去发现和创造。