c++中istringstream stream(line);
流都很类似 比如:输入输出流 就是cin cout 从控制台读入写出 字符串流也类似,只是重定向到字符串。istringstream 是从字符串读, ostringstream是写到字符串中去,用法跟cin cout完全一样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;
}
#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();)。