亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

用標準c++實現string與各種類型之間的轉換

2020-01-26 15:48:33
字體:
來源:轉載
供稿:網友

要實現這個目標,非stringstream類莫屬。

這個類在頭文件中定義, < sstream>庫定義了三種類:istringstream、ostringstream和stringstream,分別用來進行流的輸入、輸出和輸入輸出操作。另外,每個類都有一個對應的寬字符集版本。

簡單起見,我主要以stringstream為中心,因為每個轉換都要涉及到輸入和輸出操作。

示例1示范怎樣使用一個stringstream對象進行從 string到int類型的轉換 注意,使用string對象來代替字符數組。這樣可以避免緩沖區溢出的危險。而且,傳入參數和目標對象的類型被自動推導出來,即使使用了不正確的格式化符也沒有危險。

示例1:

復制代碼 代碼如下:

std::stringstream stream;

string result="10000";

int n = 0;

stream << result; stream >> n;//n等于10000


int到string類型的轉換
復制代碼 代碼如下:

string result;

int n = 12345;

stream << n;

result =stream.str();// result等于"12345"


重復利用stringstream對象 如果你打算在多次轉換中使用同一個stringstream對象,記住再每次轉換前要使用clear()方法,在多次轉換中重復使用同一個 stringstream(而不是每次都創建一個新的對象)對象最大的好處在于效率。stringstream對象的構造和析構函數通常是非常耗費CPU 時間的。經試驗,單單使用clear()并不能清除stringstream對象的內容,僅僅是了該對象的狀態,要重復使用同一個 stringstream對象,需要使用str()重新初始化該對象。

示例2:

復制代碼 代碼如下:

std::stringstream strsql;

for (int i= 1; i < 10; ++i)

{

  strsql << "insert into test_tab values(";

  strsql << i << ","<< (i+10) << ");";

   std::string str = strsql.str();// 得到string

   res = sqlite3_exec(pDB,str.c_str(),0,0, &errMsg);

  std::cout << strsql.str() << std::endl; strsql.clear();

  strsql.str("");

}


轉換中使用模板 也可以輕松地定義函數模板來將一個任意的類型轉換到特定的目標類型。

例如,需要將各種數字值,如int、long、double等等轉換成字符串,要使用以一個string類型和一個任意值t為參數的to_string()函數。

to_string()函數將t轉換為字符串并寫入result中。

使用str()成員函數來獲取流內部緩沖的一份拷貝:

示例3:

復制代碼 代碼如下:

template void to_string(string & result,const T& t)

{ ostringstream oss;//創建一個流 oss< out_type convert(const in_value & t)

{ stringstream stream; stream<>result;//向result中寫入值 return result; }


這樣使用convert(): double d; string salary; string s=”12.56”; d=convert(s);//d等于12.56 salary=convert(9000.0);//salary等于”9000”

結論:在過去留下來的程序代碼和純粹的C程序中,傳統的形式的轉換伴隨了我們很長的一段時間。但是,如文中所述,基于 stringstream的轉換擁有類型安全和不會溢出這樣搶眼的特性,使我們有充足得理由拋棄而使用< sstream>。

當然現在還有一個更好的選擇,那就是使用boost庫中的lexical_cast,它是類型安全的轉換。

如下例:

復制代碼 代碼如下:

#include #include #include #include #include

 using namespace std;

using namespace boost;

int main(void)

try

{

//以下是內置類型向string轉換的解決方案

//lexical_cast優勢明顯

int ival;

char cval;

ostringstream out_string;

string str0;

string str1;

ival = 100;

cval = 'w';

out_string << ival << " " << cval;

str0 = out_string.str();

str1 = lexical_cast(ival) + lexical_cast(cval);

cout << str0 << endl; cout << str1 << endl;

//以下是string向內置類型轉換的解決方案

//幾乎和stringstrem相比,lexical_cast就是類型安全的,

int itmpe;

char ctmpe;

str0 = "100k";

str1 = "100h";

istringstream in_string( str0 );

in_string >> itmpe >> ctmpe;

cout << itmpe << " " << ctmpe << endl;

itmpe = lexical_cast(str1);

ctmpe = lexical_cast(str1);

system( "PAUSE" );

return 0;

} catch(bad_lexical_cast e)

{ cout << e.what() << endl; cin.get(); }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产69久久精品成人| 国产视频久久久久| 亚洲国产精品热久久| 97人人爽人人喊人人模波多| 7m精品福利视频导航| 深夜成人在线观看| 欧美黑人xxxx| 久久亚洲国产成人| 九九精品在线视频| 国产成人精品久久二区二区91| 国产视频福利一区| 欧美日韩国产精品一区二区三区四区| 国产成人精品一区二区在线| 国产精品jvid在线观看蜜臀| 日韩电影免费观看在线观看| 日韩女优在线播放| 亚洲精品黄网在线观看| 欧美精品免费看| 色婷婷久久av| 欧美性猛交xxxx免费看| 国产欧美一区二区三区四区| 日本午夜在线亚洲.国产| 国产精品久久久久福利| 日韩电影免费在线观看中文字幕| 国产精品久久久久久久久| 欧美日韩aaaa| 日韩精品在线观看一区二区| 欧美极品美女电影一区| 91sa在线看| 成人在线观看视频网站| 久久国产精品影视| 人人爽久久涩噜噜噜网站| 国产精品极品尤物在线观看| 久久久伊人日本| 爽爽爽爽爽爽爽成人免费观看| 中文字幕日韩免费视频| 午夜精品福利在线观看| 亚洲欧洲免费视频| 日韩极品精品视频免费观看| 精品少妇v888av| 尤物九九久久国产精品的分类| 久久成年人视频| 国产精品入口免费视频一| 亚洲福利视频网| 欧美精品www| 精品久久久久久中文字幕大豆网| 91免费看片在线| 亚洲成人三级在线| 国内免费精品永久在线视频| 欧美性理论片在线观看片免费| 91精品久久久久久久久青青| 亚洲欧美日韩久久久久久| 91深夜福利视频| 欧美电影《睫毛膏》| 欧美日韩一区免费| 精品免费在线视频| 欧美性理论片在线观看片免费| 欧美一区三区三区高中清蜜桃| 日韩av资源在线播放| 久久九九亚洲综合| 97久久精品国产| 国产精品爱啪在线线免费观看| 美乳少妇欧美精品| 91精品免费久久久久久久久| 欧美激情喷水视频| 亚洲欧美三级伦理| 一区二区日韩精品| 国产日韩欧美在线视频观看| 国产精品专区第二| 亚洲天堂视频在线观看| 91在线高清视频| 欧美日韩国产一区中文午夜| 日韩av电影在线网| 97久久精品视频| 国产精品观看在线亚洲人成网| 一区二区三区四区视频| 国产一区二区三区18| 日韩欧美在线视频日韩欧美在线视频| 欧美国产在线电影| 国产精品日韩电影| 懂色av中文一区二区三区天美| 亚洲精品电影网在线观看| 中日韩美女免费视频网址在线观看| 国产一区玩具在线观看| 亚洲人成自拍网站| 久久综合国产精品台湾中文娱乐网| 国产精品女人久久久久久| 亚洲性生活视频在线观看| 性色av一区二区三区在线观看| 亚洲成人网在线观看| 久久久久九九九九| 欧美国产日产韩国视频| 欧洲成人在线观看| 久久精品这里热有精品| 欧美日韩亚洲精品一区二区三区| 久久天堂av综合合色| 91在线高清免费观看| 亚洲精品永久免费| 久久免费观看视频| 韩国欧美亚洲国产| 国产一区红桃视频| 日韩av中文字幕在线免费观看| 欧美大片网站在线观看| 成人自拍性视频| 亚洲аv电影天堂网| 久久91超碰青草是什么| 成人精品久久一区二区三区| 国产精品18久久久久久麻辣| 欧美极品少妇xxxxⅹ免费视频| 日韩在线视频导航| 亚洲va码欧洲m码| 欧美午夜久久久| 国产一区二区丝袜| 亚洲精品黄网在线观看| 国产精品福利在线观看网址| 亚洲性生活视频在线观看| 久久精品福利视频| 欧美成人国产va精品日本一级| 国产福利视频一区二区| 亚洲激情成人网| 国产日韩欧美在线播放| 97在线免费视频| 日韩av电影免费观看高清| 精品国产一区二区三区四区在线观看| 成人中文字幕+乱码+中文字幕| 国产精品专区第二| 欧美最猛性xxxx| 欧美黄色成人网| 午夜精品一区二区三区在线播放| 国产精品美女久久久久久免费| 日韩av在线一区| 亚洲永久在线观看| 日韩精品福利在线| 国产午夜精品一区二区三区| 日韩综合中文字幕| 欧美视频在线免费看| 亚洲欧洲自拍偷拍| 久久青草精品视频免费观看| 成人激情黄色网| 久久人人爽人人爽人人片亚洲| 亚洲国产欧美一区| 久久精彩免费视频| 欧美日韩国产页| 亚洲精品成人久久| 日韩精品中文字幕在线观看| 国产在线精品成人一区二区三区| 欧洲成人免费aa| 亚洲欧美一区二区三区久久| 欧美成人全部免费| 国产精品永久免费观看| 欧美性开放视频| 国产精品户外野外| 青草青草久热精品视频在线观看| 久久久久女教师免费一区| 亚洲欧美日韩天堂一区二区| 欧美色视频日本高清在线观看| 日韩女优在线播放| 成人黄色av播放免费| 色综合天天狠天天透天天伊人| 亚洲色无码播放| 亚洲跨种族黑人xxx| 在线观看免费高清视频97| 国产91在线播放| 国产精品久久久久久久久久久新郎|