C++標準庫中的<sstream>提供了一個stringstream,之前基本沒用過,忽然發現很好用(^-^)V緩存
參見 http://www.cplusplus.com/reference/sstream/stringstream/函數
若是你打算在屢次轉換中使用同一個stringstream對象,記住再每次轉換前要使用clear()方法;對象
在屢次轉換中重複使用同一個stringstream(而不是每次都建立一個新的對象)對象最大的好處在於效率。stringstream對象的構造和析構函數一般是很是耗費CPU時間的。內存
如何用使用stringstream進行類型轉換:字符串
1. 下面例子爲整型和sting類型的相互轉換示例get
整型轉換爲字符串類型input
string NumberToString(int num)
{
stringstream ss;
ss<<num; //像流中傳值
string result;
ss>>result; //將流中的值寫入到result
return result;
}string
字符創類型轉換爲整型it
int StringToNumber(string strNum)
{
stringstream ss;
ss<<strNum;
int result;
ss>>result;
return result;
}編譯
編譯期就肯定了num,result,strNum的類型,調用stringstream的時候擁有足夠的信息判斷來進行自動轉換,並將轉換結果緩存到stringstream對象的內部緩衝中
stringstream對象會根據須要自動分配內存,不用擔憂溢出問題.
例如:
float n = 22.22;
string strNum = "22.22";
cout<<StringToNumber(strNum)<<endl;
cout<<NumberToString(n)<<endl;
輸出:22 22
2. 任意類型的轉換
template <class output_type,class input_type>
output_type Convert(const input_type &input)
{
stringstream ss;
ss<<input;
output_type result;
ss>>result;
return result;
}
例如:
float n = 22.22;
string strNum = "22.22";
float f = Convert<float>(strNum);
cout<<f<<endl;
string ss = Convert<string>(n);
cout<<ss<<endl;
輸出: 22.22 22.22
3. 自定義類型的轉換
<sstream>庫還提供了另一個特性—可擴展性,你能夠經過重載來支持自定義類型間的轉換,下次在探究