【发布时间】:2012-02-08 16:07:12
【问题描述】:
我有以下简单的代码,它将文本文件的内容读入字符数组:
const char* name = "test.txt";
std::cout << "Loading file " << name << std::endl;
std::ifstream file;
file.open(name);
file.seekg (0, std::ios::end);
int length = file.tellg();
std::cout << "Size: " << length << " bytes" << std::endl;
file.seekg (0, std::ios::beg);
char* buffer = new char[length];
file.read(buffer,length);
file.close();
std::cout.write(buffer,length);
但是,ifstream 似乎从文件中读取了错误数量的字符:每行增加 1 个字符。我在网上搜索,看起来在win7文本文件中除了每行末尾的换行符(\n)外,还有回车符(\r)。但是,流不知何故看不到这些 \r,但仍使用文件中的原始符号数,从文件末尾读取额外的字节。有没有办法解决这个问题?
如果有帮助:我使用 MinGW 编译器和 Windows 7 64 位。
【问题讨论】:
-
也许您可以改用
readsome函数,看看您实际阅读了多少?