您好,登錄后才能下訂單哦!
這篇文章主要介紹“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í)用的文章!
免責(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)容。