1 我们往往会遇到这样的情况,我们在读文件或是从从输入流读数据的时候,往往需要一次读取一行,然而我们在处理数据的时候,又想一个字符串一个字符串的处理。我们该怎么办呢。我们可以用字符串流:
#include
<iostream>
#include
<sstream>
using
namespace std;
int
main()
{
string line,word;
while(getline(cin,line))//
从输入流读取一行数据
{
istringstream stream(line);//
创建一个输入流对象
while(stream >> word)//
从输入流对象往变量word里写数据
{
cout << word << endl;
}
}
return 0;
}
这个程序就实现了我们的想法
。
下面我们一起看一下字符串流对象的定义,他有默认构造函数,所以我们可以这样定义一个字符串流对象.
stringstream stream;
我们还可以这样定义:
stringstream stream(s);//
调用有参构造函数。
另外他还有其他的操作:
如:
stream.str();
用于返回stream里面存储的字符串。
stream.str(s);
等价于:
stringstream stream(s);
2 stringstream
提供转换和/或格式化
#include
<iostream>
#include
<sstream>
using
namespace std;
int
main()
{
string line,val1 = "hello ",val2 = "world";
stringstream stream;
stream << "val1: " << val1 << "val2: " << val2 << endl;
line = stream.str();
cout << line;
return 0;
}
我们再次将数据找回来。。
#include
<iostream>
#include
<sstream>
using
namespace std;
int
main()
{
string line,val1 = "hello ",val2 = "world";
stringstream stream;
stream << "val1: " << val1 << "val2: " << val2 << endl;
line = stream.str();
cout << line;
string val11,val22;
istringstream istream(line);
istream >> val11 >> val1 >> val22 >> val2;
cout << val11 << " "<< val1 << " " << val22 << " " << val2;
return 0;
}