我有一个读取文件的问题,在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操作系统将返回文件结尾状态。 –