简介:
1 iostream支持程序和终端之间的I/O;
2 fstream支持程序和文件之间的I/O;
3 sstream支持程序和字符对象之间的I/O
sstream使用:
1 istringstream只允许读出字符,可以使用.str(s)初始化,不允许使用<<操作符
int main()
{
string s = "-3745 djjkf this ia s very good example";
istringstream ss;
ss.str(s);
string sout;
while (ss>>sout)
cout<<sout<<endl;
system("pause");
return 0;
}
2 ostringstream只允许读入信息,使用<<,不允许使用>>操作,也可以使用.str(s)初始化。
注意:
1) 使用了str(s)初始化,那么当前读入的位置不变,继续使用<<就会覆盖str()初始化的内容
2) 重新使用str(s)也会覆盖前面所有内容
int main()
{
string s = "-3745 djjkf this ia s very good example";
ostringstream ss;
ss.str(s);
string a = "HELLOWORLD";
ss<<a;
ss<<a;
cout<<ss.str();
system("pause");
return 0;
}
3 stringstream兼具了前面两者的功能和特性
注意:
1 连续操作输入数据,需要使用clear()清空输入状态;
注意不是清空内容,是允许继续输入的意思,原来的内容还可以使用.str()读出。网上有人争论这个问题,其实也没什么好研究的,多动手,不能光凭手册理解判断。
2 要想实现真正清空,并重新输入数据需要使用.str("")和.clear()配合使用
int main()
{
string s = "-3745 djjkf this ia s very good example";
stringstream ss;
string a = "856";
ss<<a;
int i = 100;
ss>>i;
cout<<i<<endl;
ss.clear();
ss<<"000";
cout<<ss.str()<<endl;
ss.str("");
ss.clear();
ss<<"123";
int j;
ss>>j;
cout<<j<<endl;
cout<<ss.str();
system("pause");
return 0;
}
暂时没发现STL里面有好用的分隔符分隔函数,好像要使用strtok函数或者boost 的split,感觉和自己写函数实现没多大区别,方便不到哪里去。