關於stringstream的學習

     <sstream>庫定義了三種類:istringstream、ostringstream和stringstream,分別用來進行流的輸入、輸出和輸入輸出操作。另外,每個類都有一個對應的寬字符集版本。簡單起見,我主要以stringstream爲中心,因爲每個轉換都要涉及到輸入和輸出操作。

注意,<sstream>使用string對象來代替字符數組。這樣可以避免緩衝區溢出的危險。而且,傳入參數和目標對象的類型被自動推導出來,即使使用了不正確的格式化符也沒有危險。

1、首先我們寫一個模板函數,函數的功能:將任意類型爲string類型

template <class T>
string to_string(IN T val)
{
 stringstream ss;
 ss<<val;
 return ss.str();
}
int main(int argc, char*argv[])
{
  string ret = to_string(1.2); //"1.2"
  ret = to_string(1);//"1"
}

1、我們再寫一個模板函數,函數的功能:將任意類型爲任意類型類型

template<class out_type,class in_value>
out_type convert(const in_value & t)
{
	std::stringstream stream;
	stream<<t;//向流中傳值
	out_type result;//這裏存儲轉換結果
	stream>>result;//向result中寫入值
	return result;
}
int main(int argc, char*argv[])
{
	string ret = convert<string>(123);
	double d1 = convert<double>(ret);
	int iRet = convert<int>(d1);
}</span>
注意:再進行多次轉換的時候,必須調用stringstream的成員函數clear()


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章