溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C++11怎么用string對象處理文件名

發(fā)布時間:2021-11-25 16:30:36 來源:億速云 閱讀:229 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“C++11怎么用string對象處理文件名”,在日常操作中,相信很多人在C++11怎么用string對象處理文件名問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C++11怎么用string對象處理文件名”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

C風(fēng)格字符串

從C語言開始,就已經(jīng)實(shí)現(xiàn)了對字符串的支持。為了處理C風(fēng)格字符串,C語言標(biāo)準(zhǔn)庫提供了一組函數(shù),它們被定義在cstring.h頭文件中:

strlen(p)     計算字符串長度

strcmp(p1, p2)  字符串比較

strcat(p1, p2)     字符串連接

strcpy(p1, p2)    字符串比較

從功能上來講,C風(fēng)格字符串完全可以滿足開發(fā)的需求。但是因?yàn)镃風(fēng)格字符串實(shí)際上是以\0結(jié)尾的字符數(shù)組。這雖然從結(jié)果上導(dǎo)致字符串處理成為C語言編程的技能之一,但是不能否認(rèn),這種難度也會產(chǎn)生不便甚至是危險:

1.保存字符串的內(nèi)存空間需要程序員管理,容易出錯。

2.幾乎所有的處理都需要理解并正確運(yùn)用\0結(jié)尾這件事。

C++中的字符串

為了解決上面的問題,C++標(biāo)準(zhǔn)庫提供了string類。使用string類,程序員首先(大部分場合)可以不必考慮字符串的內(nèi)存分配問題,再就是可以使用更加直觀地方式來操作字符串,例如:

使用=運(yùn)算符實(shí)現(xiàn)字符串拷貝

使用+或+=運(yùn)算符實(shí)現(xiàn)字符串連接

使用[]從字符串取得指定的字符

使用比較運(yùn)算符進(jìn)行字符串比較

C++標(biāo)準(zhǔn)庫中的文件名

回到今天的主題,C++標(biāo)準(zhǔn)庫中,定義了3個類來支持文件讀寫:

ifstream:支持從文件讀取數(shù)據(jù)

ofstream:支持向文件寫入數(shù)據(jù)

fstream:支持讀寫數(shù)據(jù)。

不知為什么,C++一方面提倡避免使用C風(fēng)格字符串,一方面在自己的標(biāo)準(zhǔn)庫中表達(dá)文件名時繼續(xù)使用C風(fēng)格字符串而不是string類。例如ifstream::open方法:

void open(const char* filename,
   ios_base::openmode mode = ios_base::in);

這種情況在C++11時發(fā)生了改變,除了支持上述方式之外,同時也可以使用下面的方法:

void open (const string& filename,  
   ios_base::openmode mode = ios_base::in);

打開文件方法中文件名參數(shù)增加了對string類的支持。雖然這里只是舉了ifstream::open的例子,這種變化也同樣適用于其他幾個文件操作類。

到此,關(guān)于“C++11怎么用string對象處理文件名”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI