1.#include <sstream>
istringstream类
描述:从流中提取数据,支持 >> 操作
字符串可以包括多个单词,单词之间使用空格分开
istringstream的构造函数原形:
istringstream::istringstream(string str);
#include <fstream>
#include <iostream>
#include <sstream>
using namespace std;
void main()
{
string strFilePath = "test.txt";
ifstream infile;
infile.open(strFilePath.c_str());
string strLine, strSplit;
istringstream ss;
while (getline(infile,strLine))//加载文本中一行字符串
{
ss.str(strLine); //将strLine中的字符串存入字符串流中
string strr = ss.str(); //可以通过str()将字符流转换为字符串
cout << strr << endl;
while (ss >> strSplit) //以空格为界,分离字符串
{
cout << strSplit << endl;
}
}
}
2.ostringstream类
把其他类型的数据写入流(往流中写入数据),支持<<操作
ostringstream的构造函数原形:
ostringstream::ostringstream(string str);
#include <fstream>
#include <iostream>
#include <sstream>
using namespace std;
void main()
{
ostringstream ostr("abd cd");
cout << ostr.str() << endl;
ostr.put('5');
cout << ostr.str() << endl;
ostr.put('4');
cout << ostr.str() << endl;
ostr.put('x');//put()对单个字符有效,若出现多个,以最后一个位准
cout << ostr.str() << endl;
ostr << "1234444";
string str3 = ostr.str();
cout << str3 << endl;
}
3.stringstream类
是对istringstream和ostringstream类的综合,支持<<, >>操作符,可以进行字符串到其它类型的快速转换
*将基本数据类型变为字符类型
#include <fstream>
#include <iostream>
#include <sstream>
using namespace std;
void main()
{
/*整型变字符串*/
int n = 10;
string sstr;
stringstream stream;
stream << n;
stream >> sstr;
cout << sstr << endl;
//多次使用stringstream,要先清空下,不能使用stream.str("");否则下面输出10
stream.clear();
//stream.str("");
/*char* 变 string*/
char cStr[10] = "hello";
stream << cStr;
stream >> sstr;
cout << sstr << endl;
}
*将字符串变为基本数据类型
#include <fstream>
#include <iostream>
#include <sstream>
using namespace std;
void main()
{
stringstream stream;
/*字符串 变 double*/
double dn;
string strd = "11.11";
stream << strd;
stream >> dn;
cout << dn << endl;
//多次使用stringstream,要先清空下,不能使用stream.str("");
stream.clear();
/*string 变 char* */
string strc = "hello";
char cStrr[10];
stream << strc;
stream >> cStrr;
cout << cStrr << endl;
}
由于stringstream构造函数会特别消耗内存,如果你要在程序中用同一个流,反复读写大量的数据,将会造成大量的内存消耗,因些这时候,需要适时地清除一下缓冲 (用 stream.str("") )。
参考
1.https://blog.csdn.net/bruce_0712/article/details/72892244
欢迎指正,转载请说明出处