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