使用(C++库)istringstream输入(格式化)
转自:
http://dev.csdn.net/article/77/77033.shtm
http://www.chinaitpower.com/A/2002-04-21/20488.html
C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。
istringstream类用于执行C++风格的串流的输入操作。
stringstream类同时可以支持C++风格的串流的输入输出操作。
strstream类同时可以支持C风格的串流的输入输出操作。
istringstream类是从istream(输入流类)和stringstreambase(c++字符串流基类)派生而来,ostringstream是从ostream(输出流类)和stringstreambase(c++字符串流基类)派生而来,stringstream则是从iostream(输入输出流类)和和stringstreambase(c++字符串流基类)派生而来。
#include
<
iostream
>
#include
<
sstream
>
#include
<
string
>
using
namespace
std;
void
test()
...
{
...{
//istringstream iss;
//iss.str("#123 1.23 aaa ,zzz kk,k oo.jjj");
istringstream iss("#123 1.23 aaa ,zzz kk,k oo.jjj");
cout << iss.str() << endl;
char ch;
iss >> ch;
cout << ch << endl;
int i;
iss >> i;
cout << i << endl;
float f;
iss >> f;
cout << f << endl;
char buf[1024];
iss >> buf;
cout << buf << endl;
iss.ignore(100, ',');
iss >> buf;
cout << buf << endl;
}
}

int
main(
int
argc,
char
*
argv[])
...
{
test();
return 0;
}
上例中,构造字符串流的时候,空格会成为字符串参数的内部分界,例子中对a,b对象的输入"赋值"操作证明了这一点,字符串的空格成为了整型数据与浮点型数据的分解点,利用分界获取的方法我们事实上完成了字符串到整型对象与浮点型对象的拆分转换过程。
str()成员函数的使用可以让istringstream对象返回一个string字符串(例如本例中的输出操作(cout<<istr.str();)。