streamstring緩衝流

目錄

1、字符串流(字符串緩衝區)

2、istreamstring

2、ostringstream

3、stringstream


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");

}

 

發佈了42 篇原創文章 · 獲贊 52 · 訪問量 6576
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章