~~~~我的生活,我的点点滴滴!!
iostream 标准库支持内存中的输入/输出,只要将流与存储在程序内存中的 string 对象捆绑起来即可。此时,可使用 iostream 输入和输出
操作符读写这个 string 对象。标准库定义了三种类型的字符串流:
istringstream,由 istream 派生而来,提供读 string 的功能
ostringstream,由 ostream 派生而来,提供写 string 的功能
stringstream,由 iostream 派生而来,提供读写 string 的功能
使用上述类时,要带上头文件sstream头文件。
//创建自由的stringstream对象 stringstream strm; //或者,通过string副本来生成stringstream对象 stringstream strm(s); //返回strm中存储的string对象 strm.str(); //或者将string类型的s复制给strm,返回void strm.str(s);
我们经常碰到一会以一个单词输入的,一会又以一行输入的,当他们两种情况同时出现在一起的时候,我们应该怎么办了?
答案:
肯定要先以行的形式读取进来,然后在以单词的方式分割,有没有好的分割方法了,当然就
string line, world; while( getline(cin, line) ) { istreamstream stream(line); while( stream >> world ) { //dosomething //这样是不是就很方便的把一行字符串以单词的形式分割开了 //不用自己傻傻的去挨个分离了 } }
换成string然后与其他的字符串拼接,最后展现出来,或者反之!这个时候用ostreamstream是在好不过了。
int a = 55; double b = 60.786; string str = ""; ostreamstream os; os << a << "--" << b; str = os.str(); cout << str << endl;
他最后变成字符串了,和sprintf类似,但是如果按下面这样写,那是不是立马觉得他比sprintf高大上了!!!!!
template <typename T> std::string toStr(const T & t) { std::ostreamstream os; os << t; return os.str(); }
int a = 55; double b = 60.789; std::string str = "hahaha a = "; str += toStr(a); str += ", b = "; str += toStr(b);
上述只是简单的罗列了一下他们的用法,更多更详细的使用还得去看c++官方给的解释与函数接口。。
很多时候,只需要知道上述的用法就满足我们的开发要求了。。