C++ ios::app 與 ios::ate 打開方式有什麼不同
用一句話形容:
兩個都把檔案指針移動到結尾,差別在於能否有權限修改、讀取原本的檔案
- 檔案指針就像開啟記事本或聊天室窗打字時的 | 的意思。
假設有一個記事本 f.txt 內容是
ABCED
ios::ate
at end
開啟檔案並將檔案指針移動到結尾,稍後你還可以移動指針到前方修改或讀取。fstream f("f.txt", ios::in|ios::out|ios::ate);
cout << f.tellg() << endl;
獲得目前指針位置在5
更動指針位置到起點開始算第0個位置
f.seekg(0, f.beg);
ios::app
append
原意為加上的意思,意味著沒有權限更動原本的存在物。開啟檔案並將檔案指針移動到結尾,稍後並沒有權限可以讀取或修改前方。
fstream f("f.txt", ios::in|ios::out|ios::app);
cout << f.tellg() << endl;
回傳指針位置 0 把結尾直接當作起點了。
小提示
開檔的時候上面的 ios::in|ios::out 不可以省略,必須詳細指明要寫、要讀還是都要。
不可以像這樣寫
fstream f("f.txt", ios::app);
沒有表明到底是要怎麼樣。
沒有留言:
張貼留言