ifstream讀取檔案失敗往往是由於路徑中包含中文字元而造成的,因為預設的ifstream物件無法識別出中文,從而導致路徑解析亂碼,無法找到檔案而失敗。
原理介紹:每個ifstream物件內部都包含乙個locale變數,用來指定字元的解析、比較等所有相關規則。預設構造的locale變數,是以「c」規則(可以把它簡單地看成是只識別英文本元的規則)來初始化的。所以只要你只讀取全英文路徑的檔案及全英文的內容,是不會有問題的。而當我們需要讀取中文路徑檔案或中文內容時,就要更改locale變數的規則。
示例**:
01
char
buffer[50];
02
ifstream ifs;
03
04
//輸出預設locale規則的名字
05
cout << ifs.getloc().name.c_str() << endl;
06
//更改locale規則以支援中文
07
ifs.imbue(locale(
"chs"
));
08
cout << ifs.getloc().name.c_str() << endl;
09
//開啟中文路徑檔案
10
ifs.open(
"d:\\測試.txt"
);
11
if
(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 ...