Ifstream读取奇怪的行为

时间:2014-01-19 16:54:22

标签: c++ file ifstream

我正在使用C ++从文件中读取一些字符并将它们存储在缓冲区中,但是,我正在目睹ifstream读取函数的奇怪行为。

首先,我正在使用此代码段来获取文件的长度:

input.seekg (0, input.end);
int length = input.tellg();
input.seekg (0, input.beg);

之后,我调用 read()从文件中获取长度字节。

除了一件事外,它工作正常: 如果我使用 input.gcount()来查看读取了多少字节,这个数字远小于我们上面的文件长度(但显示实际 nuber文件中的字节数。)

您是否知道使用 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();

1 个答案:

答案 0 :(得分:1)

Fstream's tellg / seekg returning higher value than expected

刚刚找到这个链接......它解释得很好!

原来我需要在发布之前再搜索一下......

谢谢大家的回答