青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

用標準c++進行string與各種內(nèi)置數(shù)據(jù)類型的轉換

要實現(xiàn)這個目標,非 stringstream 類莫屬。這個類在<sstream>頭文件中定義, <sstream>庫定義了三種類:istringstream、ostringstream和stringstream,分別用來進行流的輸入、輸出和輸入輸出操作。另外,每個類都有一個對應的寬字符集版本。簡單起見,我主要以stringstream為中心,因為每個轉換都要涉及到輸入和輸出操作。示例1示范怎樣使用一個stringstream對象進行從
string到int類型的轉換
注意,<sstream>使用string對象來代替字符數(shù)組。這樣可以避免緩沖區(qū)溢出的危險。而且,傳入?yún)?shù)和目標對象的類型被自動推導出來,即使使用了不正確的格式化符也沒有危險。
示例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(而不是每次都創(chuàng)建一個新的對象)對象最大的好處在于效率。stringstream對象的構造和析構函數(shù)通常是非常耗費CPU時間的。經(jīng)試驗,單單使用clear()并不能清除stringstream對象的內(nèi)容,僅僅是了該對象的狀態(tài),要重復使用同一個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("");
}
轉換中使用模板
也可以輕松地定義函數(shù)模板來將一個任意的類型轉換到特定的目標類型。例如,需要將各種數(shù)字值,如int、long、double等等轉換成字符串,要使用以一個string類型和一個任意值 t 為參數(shù)的to_string()函數(shù)。to_string()函數(shù)將 t 轉換為字符串并寫入result中。使用str()成員函數(shù)來獲取流內(nèi)部緩沖的一份拷貝:
示例3:
template<class T>
void to_string(string & result,const T& t)
{
ostringstream oss;//創(chuàng)建一個流
oss<<t;//把值傳遞如流中
result=oss.str();//獲取轉換后的字符轉并將其寫入result
}
這樣,你就和衣輕松地將多種數(shù)值轉換成字符串了:
to_string(s1,10.5);//double到string
to_string(s2,123);//int到string
to_string(s3,true);//bool到string
可以更進一步定義一個通用的轉換模板,用于任意類型之間的轉換。函數(shù)模板convert()含有兩個模板參數(shù)out_type和in_value,功能是將in_value值轉換成out_type類型:
template<class out_type,class in_value>
out_type convert(const in_value & t)
{
stringstream stream;
stream<<t;//向流中傳值
out_type result;//這里存儲轉換結果
stream>>result;//向result中寫入值
return result;
}
這樣使用convert():
double d;
string salary;
string s=”12.56”;
d=convert<double>(s);//d等于12.56
salary=convert<string>(9000.0);//salary等于”9000”
結論

在過去留下來的程序代碼和純粹的C程序中,傳統(tǒng)的<stdio.h>形式的轉換伴隨了我們很長的一段時間。但是,如文中所述,基于stringstream的轉換擁有類型安全和不會溢出這樣搶眼的特性,使我們有充足得理由拋棄<stdio.h>而使用<sstream>。
當然現(xiàn)在還有一個更好的選擇,那就是使用boost庫中的lexical_cast,它是類型安全的轉換。如下例:
#include <iostream>

#include <sstream>
#include <string>
#include <cstdlib>
#include <boost/lexical_cast.hpp>
using namespace std;
using namespace boost;
int main(void)
try{

//以下是內(nèi)置類型向string轉換的解決方案

//lexical_cast優(yōu)勢明顯

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


+ lexical_cast<string>(cval);

cout << str0 << endl;

cout << str1 << endl;


//以下是string向內(nèi)置類型轉換的解決方案

//幾乎和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<int>(str1);


ctmpe = lexical_cast<char>(str1);

system( "PAUSE" );

return 0;
}
catch(bad_lexical_cast e)
{

cout << e.what() << endl;

cin.get();
}

Copyright © 藍塵

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品免费福利| 国产精品久久久久影院亚瑟| 国内自拍一区| 久久国产精品高清| 欧美一区二区啪啪| 黑人一区二区| 欧美aⅴ99久久黑人专区| 久久综合99re88久久爱| 亚洲电影第1页| 91久久久亚洲精品| 欧美精品电影在线| 亚洲色无码播放| 亚洲综合日韩| 黄色亚洲大片免费在线观看| 蜜桃精品久久久久久久免费影院| 久久嫩草精品久久久久| 亚洲全黄一级网站| 一区二区三区四区五区精品视频| 国产精品久久久一本精品| 久久久五月天| 欧美成人一区二区在线| 亚洲一区二区三区中文字幕在线| 亚洲资源av| 亚洲电影在线| 亚洲性夜色噜噜噜7777| 狠狠色狠狠色综合系列| 亚洲国产欧美在线人成| 国产精品久久久久久久一区探花| 久久久久国产精品一区二区| 欧美国产精品久久| 欧美一区2区视频在线观看| 久久精品成人| 在线综合欧美| 久久看片网站| 亚洲在线视频网站| 老鸭窝亚洲一区二区三区| 亚洲一区二区三区欧美| 久久九九热免费视频| 中文国产成人精品| 久久久久久久久伊人| 一区二区三区不卡视频在线观看| 欧美专区在线观看| 亚洲天堂av电影| 葵司免费一区二区三区四区五区| 亚洲在线成人| 欧美岛国激情| 免费成人高清| 国产亚洲福利一区| 99这里只有久久精品视频| 影音先锋成人资源站| 亚洲已满18点击进入久久| 日韩亚洲综合在线| 久久综合九色综合欧美狠狠| 欧美在线不卡视频| 欧美日韩裸体免费视频| 亚洲二区视频| 伊人久久婷婷| 久久狠狠亚洲综合| 欧美亚洲尤物久久| 欧美手机在线| 国产精品高潮呻吟久久av黑人| 亚洲视频一二| 免费在线看成人av| 老牛嫩草一区二区三区日本| 国产免费成人在线视频| 一区二区欧美视频| 亚洲三级免费电影| 女人天堂亚洲aⅴ在线观看| 久久久久看片| 一区二区视频免费在线观看| 久久精品电影| 美女国产一区| 亚洲国产精品视频| 女女同性精品视频| 亚洲激情网站| 亚洲一区www| 国产精品v片在线观看不卡| av成人老司机| 午夜精品久久久久久99热| 国产精品久久久91| 亚洲午夜精品福利| 亚洲一区二区三区777| 欧美激情一区| 久久久国产精品一区| 国产精品video| 亚洲精品男同| 亚洲香蕉伊综合在人在线视看| 欧美第十八页| 亚洲第一在线综合网站| 亚洲国产精品一区| 免费在线亚洲欧美| 亚洲国产另类久久精品| 亚洲国产你懂的| 久久在线精品| 亚洲国产精品高清久久久| 亚洲国产人成综合网站| 麻豆精品在线视频| 亚洲福利av| 日韩午夜av在线| 欧美午夜不卡在线观看免费| 亚洲剧情一区二区| 一区二区三区精品在线| 国产精品成人国产乱一区| 夜夜嗨av一区二区三区中文字幕| 在线播放中文字幕一区| 免费在线看一区| 亚洲精品综合在线| 午夜精品一区二区在线观看| 国产网站欧美日韩免费精品在线观看 | 欧美激情无毛| 日韩午夜免费| 欧美精品一卡二卡| 亚洲自拍偷拍一区| 美女主播一区| 影音先锋久久精品| 欧美日本一道本在线视频| 一区二区三区四区五区精品| 久久久www免费人成黑人精品 | 欧美mv日韩mv国产网站| 亚洲国产成人91精品| 亚洲午夜成aⅴ人片| 国产精品久久久久久亚洲毛片| 欧美在线你懂的| 亚洲七七久久综合桃花剧情介绍| 亚洲免费一级电影| 一区二区在线免费观看| 欧美激情一区二区三区在线视频 | 亚洲精品黄色| 国产精品毛片一区二区三区 | 米奇777在线欧美播放| 亚洲毛片在线观看| 国产精品亚洲一区二区三区在线| 久热re这里精品视频在线6| 国产精品99久久久久久久久久久久 | 久久夜色精品国产欧美乱| 一本色道久久| 亚洲免费成人av电影| 久久影视精品| 亚洲综合国产激情另类一区| 亚洲国产成人在线播放| 国产精品久久久久久福利一牛影视| 久久久www免费人成黑人精品| 亚洲欧洲一级| 亚洲人成在线观看网站高清| 久久久人人人| 午夜综合激情| 99视频精品| 亚洲精品久久久蜜桃| 国产精品伦子伦免费视频| 欧美视频精品在线观看| 欧美高清在线播放| 久久精品在线观看| 性欧美超级视频| 亚洲免费视频一区二区| 亚洲精品一区二区三区蜜桃久| 亚洲国产精品电影在线观看| 欧美不卡视频一区发布| 久久精品在这里| 欧美综合国产| 香蕉久久夜色精品国产使用方法 | 免费成人小视频| 久久久九九九九| 亚洲欧美日韩国产一区二区三区| 亚洲美女性视频| 91久久中文| 亚洲精品在线观看免费| 亚洲人成亚洲人成在线观看图片| 亚洲国产另类久久精品| 美女主播精品视频一二三四| 欧美国产丝袜视频| 免费成人在线观看视频| 嫩草影视亚洲| 欧美国产第一页| 亚洲国产精品成人精品| 亚洲福利视频三区| 欧美国产综合视频| 亚洲国产视频a| 亚洲人成网站在线播| a4yy欧美一区二区三区| 亚洲一区免费观看| 久久精品国产亚洲精品| 久久一二三国产| 蜜桃av一区二区在线观看| 欧美不卡高清| 欧美三区美女| 国产精品一区二区男女羞羞无遮挡| 国产精品网红福利| 国产一区清纯| 亚洲图片欧洲图片日韩av| 午夜精品国产精品大乳美女| 久久久久久久久伊人| 欧美第十八页| 99精品国产福利在线观看免费| 小处雏高清一区二区三区| 六月婷婷一区| 欧美日韩免费在线视频| 国产亚洲欧美激情| 亚洲美女区一区| 麻豆精品视频在线观看| 日韩亚洲欧美成人|