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 <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();)。