我有一個讀取文件的問題,在Windows上打開fstream。閱讀文件內容與ifstream打開
文件成功打開,它沒有錯誤,但循環getline沒有內容。
除此之外樣本完美運行,並打印整個文件內容
std::copy(std::istream_iterator<std::string>(file), std::istream_iterator<std::string>(),
std::ostream_iterator<std::string>(std::cerr, "\n"));
在Linux上一切都是完美的,相同的文件,同樣的代碼,函數getline循環讀取所有。
的Visual Studio 2013
編輯:
我忘了提,我有這個代碼的小線週期之前,函數getline
std::cout << file.rdbuf();
在Linux上這一行只是打印文件內容,在它不僅打印,但使文件無法訪問到std::getline
while循環後,因此,如果您打印'strings.size()'你得到零? – NathanOliver
@NathanOliver yep – tty6
該文件是一個文本文件嗎?第一個字符是0x1A?在Windows中,有特殊字符或字節值表示文件狀態結束。如果您的文件在開頭*處包含這些文件,並且您沒有將文件作爲二進制文件打開*,則Windows操作系統將返回文件結尾狀態。 –