這篇文章主要介紹“C++11怎么用string對(duì)象處理文件名”,在日常操作中,相信很多人在C++11怎么用string對(duì)象處理文件名問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”C++11怎么用string對(duì)象處理文件名”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
成都創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)安陸,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):028-86922220
C風(fēng)格字符串
從C語(yǔ)言開(kāi)始,就已經(jīng)實(shí)現(xiàn)了對(duì)字符串的支持。為了處理C風(fēng)格字符串,C語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供了一組函數(shù),它們被定義在cstring.h頭文件中:
strlen(p) 計(jì)算字符串長(zhǎng)度
strcmp(p1, p2) 字符串比較
strcat(p1, p2) 字符串連接
strcpy(p1, p2) 字符串比較
從功能上來(lái)講,C風(fēng)格字符串完全可以滿(mǎn)足開(kāi)發(fā)的需求。但是因?yàn)镃風(fēng)格字符串實(shí)際上是以\0結(jié)尾的字符數(shù)組。這雖然從結(jié)果上導(dǎo)致字符串處理成為C語(yǔ)言編程的技能之一,但是不能否認(rèn),這種難度也會(huì)產(chǎn)生不便甚至是危險(xiǎn):
1.保存字符串的內(nèi)存空間需要程序員管理,容易出錯(cuò)。
2.幾乎所有的處理都需要理解并正確運(yùn)用\0結(jié)尾這件事。
C++中的字符串
為了解決上面的問(wèn)題,C++標(biāo)準(zhǔn)庫(kù)提供了string類(lèi)。使用string類(lèi),程序員首先(大部分場(chǎng)合)可以不必考慮字符串的內(nèi)存分配問(wèn)題,再就是可以使用更加直觀地方式來(lái)操作字符串,例如:
使用=運(yùn)算符實(shí)現(xiàn)字符串拷貝
使用+或+=運(yùn)算符實(shí)現(xiàn)字符串連接
使用[]從字符串取得指定的字符
使用比較運(yùn)算符進(jìn)行字符串比較
C++標(biāo)準(zhǔn)庫(kù)中的文件名
回到今天的主題,C++標(biāo)準(zhǔn)庫(kù)中,定義了3個(gè)類(lèi)來(lái)支持文件讀寫(xiě):
ifstream:支持從文件讀取數(shù)據(jù)
ofstream:支持向文件寫(xiě)入數(shù)據(jù)
fstream:支持讀寫(xiě)數(shù)據(jù)。
不知為什么,C++一方面提倡避免使用C風(fēng)格字符串,一方面在自己的標(biāo)準(zhǔn)庫(kù)中表達(dá)文件名時(shí)繼續(xù)使用C風(fēng)格字符串而不是string類(lèi)。例如ifstream::open方法:
void open(const char* filename,
ios_base::openmode mode = ios_base::in);
這種情況在C++11時(shí)發(fā)生了改變,除了支持上述方式之外,同時(shí)也可以使用下面的方法:
void open (const string& filename,
ios_base::openmode mode = ios_base::in);
打開(kāi)文件方法中文件名參數(shù)增加了對(duì)string類(lèi)的支持。雖然這里只是舉了ifstream::open的例子,這種變化也同樣適用于其他幾個(gè)文件操作類(lèi)。
到此,關(guān)于“C++11怎么用string對(duì)象處理文件名”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!