目錄
1、字符串流(字符串緩衝區)
相對於程序中變量而言的輸入輸出。
1)istringstream類用於執行C++風格的字符串流的輸入操作;
2)ostringstream類用於執行C++風格的字符串流的輸出操作;
3)strstream類同時可以支持C++風格的字符串流的輸入輸出操作。
2、istreamstring
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
//C++類型的字符串流的輸入操作
//將大字符串分割成小字符串
istringstream is;
is.str("1 abc");
cout << is.str() << endl;
int a = 0;
char ch1, ch2, ch3;
//根據變量的類型 從字符串流(字符串緩衝區)中取數據
is >> a >> ch1 >> ch2 >> ch3;
cout << a << ends
<< ch1 << ends
<< ch2 << ends
<< ch3 << endl;
//緩衝區中的數據 讀完後還存在
cout << is.str() << endl;
//不支持 動態的添加數據 <<
//is << "defg";
//會替換原數據
is.str("2 d");
cout << is.str() << endl;
//清空狀態 不是清空流數據
is.clear();
//測試 流再次輸出數據的描述符位置,從頭開始。
int b = 0;
char ch4;
is >> b;
is >> ch4;
cout << b << ends << ch4 << endl;
//讀取空數據返回-1
char ch5 = is.peek(); //查看下一個字符是什麼,不會真正讀走字符
cout << ch5 << endl;
//將字符ch4放回流中
is.putback(ch4);
is >> ch5;
cout << ch5 << endl;
//清空數據
is.str("");
cout << is.str() << endl;
system("pause");
}
2、ostringstream
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
//C++風格的字符串輸出流
//將小字符串 合成大字符串
ostringstream os1;
ostringstream os2("1 abc");
os1 << os2.str(); //可以動態添加數據
cout << os1.str() << ends << os2.str() << endl;
//注意,該操作會使 asd覆蓋1 abc得到asdbc。 填充數據會從第一位開始一個一個覆蓋
os2 << "asd";
cout << os2.str() << endl;
//向字符流中添加字符
os1.put('d');
cout << os1.str() << endl;
//重新填充字符流
os1.str(" ");
cout << os1.str() << endl;
system("pause");
}
3、stringstream
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
//同時具備 C++風格的字符串流的輸入輸出操作
stringstream ios;
//添加數據
ios << "1 abc";
ios << " 2 def";
int a, b;
char ch1, ch2, ch3;
a = b = 0;
ch1 = ch2 = ch3 = ' ';
string str;
cout << ios.str() << endl;
//讀出數據
ios >> a >> ch1 >> ch2 >> ch3 >> b >> str;
cout << a << ends << ch1 << ends << ch2 << ends << ch3 << ends
<< b << ends << str << endl;
system("pause");
}