<sstream>庫
- <sstream>庫定義了三種類:
istringstream惹谐、ostringstream和stringstream
是整,分別用來進行流的輸入铡羡、輸出和輸入輸出操作墅垮。 - 基于該類的轉(zhuǎn)換擁有類型安全和不會溢出的特性惕医。還可以通過重載來支持自定義類型間的轉(zhuǎn)換。
- 如果你打算在多次轉(zhuǎn)換中使用同一個流對象算色,記住再每次轉(zhuǎn)換前要使用
clear()
方法抬伺;
<1>ostringstream
將int、long剃允、double
等類型轉(zhuǎn)換成字符串string
類型沛简。
template<class T>
void to_string(string & result,const T& t){
ostringstream oss;//創(chuàng)建一個流
oss<<t;//把值傳遞如流中
result=oss.str();//獲取轉(zhuǎn)換后的字符轉(zhuǎn)并將其寫入result
}
<2>stringstream
任意類型之間的轉(zhuǎn)換。將in_value值轉(zhuǎn)換成out_type類型
template<class out_type,class in_value>
out_type convert(const in_value & t){
stringstream stream;
stream<<t;//向流中傳值
out_type result;//這里存儲轉(zhuǎn)換結(jié)果
stream>>result;//向result中寫入值
return result;
}
<3>istringstream
字符串轉(zhuǎn)基本類型
istringstream iss;
iss.str("123");//或者直接構(gòu)造 istringstream iss2("123 456");
int n;
iss >> n;
>>
以空格為界斥废。會把輸入的流用空格分隔開椒楣。while(iss2>>str){//每次讀取一個單詞(以空格為界),存入str中 cout << str<<","; }//123 456
<4>實例
- 基本數(shù)據(jù)類型轉(zhuǎn)換牡肉。int轉(zhuǎn)string
int n = 100;
string str;
//使用stringstream
stringstream ss;
ss << n;
ss >> str;
cout << str << endl;
//使用ostringstream
ostringstream oss;
oss << n;
str = oss.str();
cout << str << endl;
-
char *
的轉(zhuǎn)換
std::stringstream stream;
char result[8] ;
stream << 8888; //向stream中插入8888
stream >> result; //抽取stream中的值到result
std::cout << result << std::endl; // 屏幕顯示 "8888"
- 多次轉(zhuǎn)換
多次轉(zhuǎn)換時必須調(diào)用stringstream的成員函數(shù)clear().
std::stringstream stream;
int first, second;
stream<< "456"; //插入字符串
stream >> first; //轉(zhuǎn)換成int
std::cout << first << std::endl;
stream.clear(); //在進行多次轉(zhuǎn)換前捧灰,必須清除stream
stream << true; //插入bool值
stream >> second; //提取出int
std::cout << second << std::endl;