中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

域名 a記錄 手機(jī)網(wǎng)站杭州網(wǎng)站優(yōu)化

域名 a記錄 手機(jī)網(wǎng)站,杭州網(wǎng)站優(yōu)化,wordpress如何修改后臺(tái)登錄地址,網(wǎng)絡(luò)運(yùn)營者應(yīng)當(dāng)制定網(wǎng)絡(luò)安全事件應(yīng)急預(yù)案C的sstream標(biāo)準(zhǔn)庫介紹 接下來我們繼續(xù)看一下C風(fēng)格的串流控制 ,C引入了ostringstream、istringstream、stringstream這三個(gè)類,要使用他們創(chuàng)建對(duì)象就必須包含sstream.h頭文件。 istringstream類用于執(zhí)行C風(fēng)格的串流的輸入操作。 ostringstream類用于執(zhí)行…

C++的sstream標(biāo)準(zhǔn)庫介紹
接下來我們繼續(xù)看一下C++風(fēng)格的串流控制 ,C++引入了ostringstream、istringstream、stringstream這三個(gè)類,要使用他們創(chuàng)建對(duì)象就必須包含sstream.h頭文件。

istringstream類用于執(zhí)行C++風(fēng)格的串流的輸入操作。
ostringstream類用于執(zhí)行C風(fēng)格的串流的輸出操作。
strstream類同時(shí)可以支持C風(fēng)格的串流的輸入輸出操作。

istringstream類是從istream(輸入流類)和stringstreambase(c++字符串流基類)派生而來,ostringstream是從ostream(輸出流類)和stringstreambase(c++字符串流基類)派生而來,stringstream則是從iostream(輸入輸出流類)和和stringstreambase(c++字符串流基類)派生而來。

他們的繼承關(guān)系如下圖所示:

istringstream是由一個(gè)string對(duì)象構(gòu)造而來,istringstream類從一個(gè)string對(duì)象讀取字符。

istringstream的構(gòu)造函數(shù)原形如下:
istringstream::istringstream(string str);

復(fù)制代碼 代碼如下:

#include <iostream >?
#include <sstream >?
using? namespace? std;?
int? main ()??
{?
istringstream istr;?
istr.str(“1 56.7”,);?
//上述兩個(gè)過程可以簡單寫成 istringstream istr(“1 56.7”);?
cout? << istr.str()<<endl;?
int? a;?
float? b;?
istr>>a;?
cout <<a<<endl;?
istr>>b;?
cout <<b<<endl;?
system(“pause”);?
}


上例中,構(gòu)造字符串流的時(shí)候,空格會(huì)成為字符串參數(shù)的內(nèi)部分界,例子中對(duì)a,b對(duì)象的輸入”賦值”操作證明了這一點(diǎn),字符串的空格成為了整型數(shù)據(jù)與浮點(diǎn)型數(shù)據(jù)的分解點(diǎn),利用分界獲取的方法我們事實(shí)上完成了字符串到整型對(duì)象與浮點(diǎn)型對(duì)象的拆分轉(zhuǎn)換過程。

str()成員函數(shù)的使用可以讓istringstream對(duì)象返回一個(gè)string字符串(例如本例中的輸出操作(cout<<istr.str();)。

ostringstream同樣是由一個(gè)string對(duì)象構(gòu)造而來,ostringstream類向一個(gè)string插入字符。

ostringstream的構(gòu)造函數(shù)原形如下:
ostringstream::ostringstream(string str);

示例代碼如下:

復(fù)制代碼 代碼如下:

#include <iostream >?
#include <sstream >?
#include <string >?
using? namespace? std;?
int? main ()??
{?
ostringstream ostr;?
//ostr.str(“abc”);//如果構(gòu)造的時(shí)候設(shè)置了字符串參數(shù),那么增長操作的時(shí)候不會(huì)從結(jié)尾開始增加,而是修改原有數(shù)據(jù),超出的部分增長?
ostr.put(‘d’);?
ostr.put(‘e’);?
ostr<<”fg”;?

string? gstr =? ostr.str();?
cout <<gstr;?
system(“pause”);?
}


在上例代碼中,我們通過put()或者左移操作符可以不斷向ostr插入單個(gè)字符或者是字符串,通過str()函數(shù)返回增長過后的完整字符串?dāng)?shù)據(jù),但值得注意的一點(diǎn)是,當(dāng)構(gòu)造的時(shí)候?qū)ο髢?nèi)已經(jīng)存在字符串?dāng)?shù)據(jù)的時(shí)候,那么增長操作的時(shí)候不會(huì)從結(jié)尾開始增加,而是修改原有數(shù)據(jù),超出的部分增長。

對(duì)于stringstream了來說,不用我多說,大家也已經(jīng)知道它是用于C++風(fēng)格的字符串的輸入輸出的。

stringstream的構(gòu)造函數(shù)原形如下:
stringstream::stringstream(string str);

示例代碼如下:

復(fù)制代碼 代碼如下:

#include <iostream >?
#include <sstream >?
#include <string >?
using? namespace? std;?

int? main ()??
{?
??? stringstream ostr(“ccc”);?
??? ostr.put(‘d’);?
??? ostr.put(‘e’);?
??? ostr<<”fg”;?
??? string? gstr =? ostr.str();?
??? cout <<gstr<<endl;?

??? char? a;?
??? ostr>>a;?
??? cout <<a?

??? system(“pause”);?
}


除此而外,stringstream類的對(duì)象我們還常用它進(jìn)行string與各種內(nèi)置類型數(shù)據(jù)之間的轉(zhuǎn)換。

示例代碼如下:

復(fù)制代碼 代碼如下:

#include <iostream >?
#include <sstream >?
#include <string >?
using? namespace? std;?

int? main ()??
{?
??? stringstream sstr;?
//——–int轉(zhuǎn)string———–?
??? int? a=100;?
??? string? str;?
??? sstr<<a;?
??? sstr>>str;?
??? cout <<str<<endl;?
//——–string轉(zhuǎn)char[]——–?
??? sstr.clear();//如果你想通過使用同一stringstream對(duì)象實(shí)現(xiàn)多種類型的轉(zhuǎn)換,請(qǐng)注意在每一次轉(zhuǎn)換之后都必須調(diào)用clear()成員函數(shù)。?
??? string? name =? “colinguan”;?
??? char? cname[200];?
??? sstr<<name;?
??? sstr>>cname;?
??? cout <<cname;?
??? system(“pause”);?
}


接下來我們來學(xué)習(xí)一下輸入/輸出的狀態(tài)標(biāo)志 的相關(guān)知識(shí),C++中負(fù)責(zé)的輸入/輸出的系統(tǒng)包括了關(guān)于每一個(gè)輸入/輸出操作的結(jié)果的記錄信息。這些當(dāng)前的狀態(tài)信息被包含在io_state類型的對(duì)象中。io_state是一個(gè)枚舉類型(就像open_mode一樣),以下便是它包含的值。

goodbit 無錯(cuò)誤
Eofbit 已到達(dá)文件尾
failbit 非致命的輸入/輸出錯(cuò)誤,可挽回
badbit 致命的輸入/輸出錯(cuò)誤,無法挽回

有兩種方法可以獲得輸入/輸出的狀態(tài)信息。一種方法是通過調(diào)用rdstate()函數(shù),它將返回當(dāng)前狀態(tài)的錯(cuò)誤標(biāo)記。例如,假如沒有任何錯(cuò)誤,則rdstate()會(huì)返回goodbit.

下例示例,表示出了rdstate()的用法:

復(fù)制代碼 代碼如下:

#include <iostream >?
using? namespace? std;?

int? main ()??
{?
??? int? a;?
??? cin >>a;?
??? cout <<cin .rdstate()<<endl;?
??? if (cin .rdstate() == ios ::goodbit)?
??? {?
??????? cout <<”輸入數(shù)據(jù)的類型正確,無錯(cuò)誤!”<<endl;?
??? }?
??? if (cin .rdstate() == ios_base::failbit)?
??? {?
??????? cout <<”輸入數(shù)據(jù)類型錯(cuò)誤,非致命錯(cuò)誤,可清除輸入緩沖區(qū)挽回!”<<endl;?
??? }?
??? system(“pause”);?
}


另一種方法則是使用下面任何一個(gè)函數(shù)來檢測(cè)相應(yīng)的輸入/輸出狀態(tài):

bool bad();
bool eof();
bool fail();
bool good();

下例示例,表示出了上面各成員函數(shù)的用法:

復(fù)制代碼 代碼如下:

#include <iostream >?
using? namespace? std;?

int? main ()??
{?
??? int? a;?
??? cin >>a;?
??? cout <<cin .rdstate()<<endl;?
??? if (cin .good())?
??? {?
??????? cout <<”輸入數(shù)據(jù)的類型正確,無錯(cuò)誤!”<<endl;?
??? }?
??? if (cin .fail())?
??? {?
??????? cout <<”輸入數(shù)據(jù)類型錯(cuò)誤,非致命錯(cuò)誤,可清除輸入緩沖區(qū)挽回!”<<endl;?
??? }?
??? system(“pause”);?
}


如果錯(cuò)誤發(fā)生,那么流狀態(tài)既被標(biāo)記為錯(cuò)誤,你必須清除這些錯(cuò)誤狀態(tài),以使你的程序能正確適當(dāng)?shù)乩^續(xù)運(yùn)行。要清除錯(cuò)誤狀態(tài),需使用clear()函數(shù)。此函數(shù)帶一個(gè)參數(shù),它是你將要設(shè)為當(dāng)前狀態(tài)的標(biāo)志值。,只要將ios::goodbit作為實(shí)參。

示例代碼如下:

復(fù)制代碼 代碼如下:

#include <iostream >?
using? namespace? std;?

int? main ()??
{?
??? int? a;?
??? cin >>a;?
??? cout <<cin .rdstate()<<endl;?
??? cin .clear(ios ::goodbit);?
??? cout <<cin .rdstate()<<endl;?
??? system(“pause”);?
}


通常當(dāng)我們發(fā)現(xiàn)輸入有錯(cuò)又需要改正的時(shí)候,使用clear()更改標(biāo)記為正確后,同時(shí)也需要使用get()成員函數(shù)清除輸入緩沖區(qū),以達(dá)到重復(fù)輸入的目的。

示例代碼如下:

復(fù)制代碼 代碼如下:

#include <iostream >?
using? namespace? std;?

int? main ()??
{?
??? int? a;?
??? while (1)?
??? {?
??????? cin >>a;?
??????? if (!cin )//條件可改寫為cin.fail()?
??????? {?
??????????? cout <<”輸入有錯(cuò)!請(qǐng)重新輸入”<<endl;?
??????????? cin .clear();?
??????????? cin .get();?
??????? }?
??????? else??
??????? {?
??????????? cout <<a;?
??????????? break ;?
??????? }?
??? }?
??? system(“pause”);?
}


最后再給出一個(gè)對(duì)文件流錯(cuò)誤標(biāo)記處理的例子,鞏固學(xué)習(xí),代碼如下:

復(fù)制代碼 代碼如下:

#include <iostream >?
#include <fstream >?
using? namespace? std;?

int? main ()??
{?
??? ifstream myfile(“c://1.txt”,ios_base::in,0);?
??? if (myfile.fail())?
??? {?
??????? cout <<”文件讀取失敗或指定文件不存在!”<<endl;?
??? }?
??? else??
??? {?
??????? char? ch;?
??????? while (myfile.get(ch))?
??????? {?
??????????? cout <<ch;?
??????? }?
??????? if (myfile.eof())?
??????? {?
??????????? cout <<”文件內(nèi)容已經(jīng)全部讀完”<<endl;?
??????? }?
??????? while (myfile.get(ch))?
??????? {?
??????????? cout <<ch;?
??????? }?
??? }?
??? system(“pause”);?
}

http://www.risenshineclean.com/news/28072.html

相關(guān)文章:

  • 網(wǎng)絡(luò)做翻譯的網(wǎng)站愛站seo綜合查詢
  • asp.net網(wǎng)站開發(fā)案例教程湖北網(wǎng)站seo策劃
  • 常州做網(wǎng)站的公司有哪些今天實(shí)時(shí)熱搜榜排名
  • 重慶今天最新消息漯河seo公司
  • wordpress站點(diǎn)全屏快速排名優(yōu)化推廣手機(jī)
  • 做金融類網(wǎng)站西安企業(yè)seo外包服務(wù)公司
  • 做html網(wǎng)站搜索框代碼新浪輿情通官網(wǎng)
  • asp網(wǎng)站搭建軟件南寧網(wǎng)站優(yōu)化
  • 代替手動(dòng)修改網(wǎng)站模板標(biāo)簽seo標(biāo)題優(yōu)化分析范文
  • 網(wǎng)站標(biāo)題如何書寫軟文接單平臺(tái)
  • 泰州網(wǎng)站設(shè)計(jì)哪家好網(wǎng)上營銷的平臺(tái)有哪些
  • 網(wǎng)站建設(shè)技能描述免費(fèi)發(fā)布推廣平臺(tái)
  • nike網(wǎng)站建設(shè)方案診斷網(wǎng)站seo現(xiàn)狀的方法
  • 西安網(wǎng)站制作百億科技全國廣告投放平臺(tái)
  • 石家莊做網(wǎng)站的公司有哪些怎么制作鏈接網(wǎng)頁
  • 建模培訓(xùn)機(jī)構(gòu)優(yōu)化seo網(wǎng)站
  • 怎么在58上做公司網(wǎng)站企業(yè)網(wǎng)站推廣方案策劃
  • 幫網(wǎng)貸做網(wǎng)站會(huì)判刑嗎網(wǎng)站加速器
  • 個(gè)人網(wǎng)站營業(yè)執(zhí)照百度搜索引擎地址
  • WordPress P站優(yōu)化二十條
  • 如何做資源論壇網(wǎng)站百度推廣和優(yōu)化哪個(gè)好
  • 南昌網(wǎng)站建設(shè)費(fèi)用四川seo優(yōu)化
  • 做網(wǎng)站的要多錢百度關(guān)鍵詞優(yōu)化
  • 網(wǎng)站開發(fā)難點(diǎn)站長工具seo查詢
  • wordpress添加文章副標(biāo)題谷歌seo服務(wù)商
  • 泰興網(wǎng)站制作網(wǎng)絡(luò)營銷策劃方案模板
  • 搭建網(wǎng)站做財(cái)務(wù)系統(tǒng)網(wǎng)站建設(shè)流程步驟
  • 網(wǎng)友seo排名賺掛機(jī)
  • 成功網(wǎng)站管理系統(tǒng)十大網(wǎng)絡(luò)推廣公司排名
  • 做網(wǎng)站宣傳多少錢如何快速網(wǎng)絡(luò)推廣