ifstream讀取檔案失敗和亂碼問題

2021-06-20 16:58:30 字數 1015 閱讀 2244

ifstream讀取檔案失敗往往是由於路徑中包含中文字元而造成的,因為預設的ifstream物件無法識別出中文,從而導致路徑解析亂碼,無法找到檔案而失敗。 

原理介紹:每個ifstream物件內部都包含乙個locale變數,用來指定字元的解析、比較等所有相關規則。預設構造的locale變數,是以「c」規則(可以把它簡單地看成是只識別英文本元的規則)來初始化的。所以只要你只讀取全英文路徑的檔案及全英文的內容,是不會有問題的。而當我們需要讀取中文路徑檔案或中文內容時,就要更改locale變數的規則。 

示例**:

01charbuffer[50];

02ifstream ifs;

03

04//輸出預設locale規則的名字

05cout << ifs.getloc().name.c_str() << endl;

06//更改locale規則以支援中文

07ifs.imbue(locale("chs"));

08cout << ifs.getloc().name.c_str() << endl;

09//開啟中文路徑檔案

10ifs.open("d:\\測試.txt");

11if(ifs.good())

12

**:

ifstream讀取txt檔案

c 寫課設 課設要求用c 寫,之前用的都是c語言。寫函式,裡面用到fread fwrite fclose等函式對檔案進行操作,但是我發現c 對檔案的操作好像不用這麼麻煩。包含 include fstream標頭檔案 直接呼叫ifstream ostream即可對txt檔案進行讀入記憶體和輸出到檔案的...

ifstream讀取檔案的坑

在c 開發中,經常使用到ifstream來開啟並讀取檔案內容,如下 string sfile szfilename ifstream i file sfile.c str while i file.eof i file.getline szbuf,4095 能看出有什麼問題麼?在工作中,發現乙個很有...

使用ifstream來讀取txt檔案,控制

include include using namespace std int main 附 問 ifstream指標如何回到開始?答 增加該語句 fin.seekg ios beg 覺得答案正確以後,得提交 這時候不能把這個測試也提交上去。可以通過以下2種方式解決 1 把檔案開始的 define ...