fstream::read如何提高文件偏移量
How is the file offset advanced by fstream::read?
#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()
有意义,但它的数值对用户程序没有意义。
相关文章:
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- 通过指针偏移量访问结构变量值
- 以线程安全的方式转换 C/C++ 中时区名称字符串的时区偏移量
- librdkafka:rd_kafka_assignment 返回分配分区的偏移量 -1001
- 读取文本文件时 seekg() 的奇怪偏移量
- 从 C++ 中的文本文件读取一定的偏移量
- 如何获取与 objdump 输出的标签相对应的 ELF 二进制文件中的文件偏移量
- 如何在窗口中按偏移量和大小映射 RAM 中的文件
- C++如何将ifstream内容(来自文件)分配给具有偏移量的字符串(istreambuf_editor)
- 在C++中搜索二进制文件分隔符时出现不正确的偏移量
- 为什么我必须为文件末尾的 seekg 提供负两个偏移量
- std::ofstream 打开文件并替换特定的偏移量
- 从文件中获取偏移量和大小以存储在地图中
- 使用libpcap,是否有一种方法可以确定从脱机pcap文件捕获的数据包的文件偏移量
- 如何获取 PE 文件签名偏移量
- 使用偏移量写入 mmap 文件,可能处理 endianess
- 从加载的 DLL 函数中获取文件偏移量
- fstream::read如何提高文件偏移量
- 我能用C++在EXE文件中找到资源的偏移量吗
- 即使偏移量超过文件大小,也不会设置eof位