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