2
我正在使用C++從文件中讀取一些字符並將它們存儲在緩衝區中,但是,我目睹了使用ifstream
的讀取函數的奇怪行爲。Ifstream讀取奇怪的行爲
首先,我使用此代碼段來獲取文件的長度:
input.seekg (0, input.end);
int length = input.tellg();
input.seekg (0, input.beg);
在那之後,我打電話閱讀()從文件中得到長度字節。
它工作得很好,除了一兩件事: 如果我使用input.gcount()看到了多少字節讀取,這個數字要少得多,我們在上面得到了(但該文件的長度顯示實際文件中的字節數)。
你們是否知道該文件的長度差什麼,通過使用所以tellg(),事後讀取的字節數發現,由gcount的()報道?
對不起,任何格式問題(我使用我的手機)。
非常感謝。
編輯:
這是代碼(或多或少)我使用:
ifstream input("test.txt");
input.seekg (0, input.end);
int length = input.tellg();
input.seekg (0, input.beg);
input.read(buffer,length);
int extracted = input.gcount();
'所以tellg()'返回而'gcount的外部序列中的位置()'返回從最近未格式化的輸入函數中讀取的字符數。因此,除非您從外部序列中讀取總字符數,否則'gcount()'總會返回比字符總數更小的值。 – 0x499602D2
感謝您的評論...是的,我忘了提及,我*閱讀整個文件與read()...不應該由tellg()返回的數字與gcount()相同嗎? – user2455103
然後請顯示代碼。 – 0x499602D2