fstream::read如何提高文件偏移量

How is the file offset advanced by fstream::read?

本文关键字:文件 偏移量 何提高 read fstream      更新时间:2023-10-16
#include <fstream>
#include <iostream>

int main(int argc, char * argv [])
{
    std::ifstream f{ "test.syp" };
    std::cout << f.tellg() << 'n';
    char buffer[4];
    f.read(buffer, 4);
    std::cout << f.gcount() << 'n';
    std::cout << f.tellg() << 'n';
}

当我执行上面的代码时,得到以下输出:

0
4
20

如果我把ifstream改为fstream,除了最后一个数字是21之外,我得到了相同的结果。

我希望在两个例子中最后一个数字都是4。为什么不呢?

Edit:如果我用std::ios::binary打开文件,我会得到预期的结果;这一定是文本模式

的怪癖

f.gcount返回由最后一个未格式化的输入操作(在本例中为f.read())读取的字符数。

f.tellg()返回一个输入位置指示符;这是一个不透明的值,对seekg()有意义,但它的数值对用户程序没有意义。