我想将以二进制模式打开的文件的所需字节到另一个所需字节的数据存储到另一个文件中。假设文件指针位于字节#10,现在我想从字节#11 读取数据到字节#30。我知道我必须使用 fread() 函数但不知道如何告诉该函数从所需位置读取到另一个所需的位置。我是初学者,所以请耐心回答这个问题。
我知道 fread() 是 C 函数,我需要 C++ 等效函数来完成这项工作。学习文件处理的书的链接或建议会很棒!
非常感谢您的帮助!
最佳答案
你必须寻求:
std::ifstream infile("source.bin", std::ios::binary);
infile.seekg(10, std::ios::beg); // seek to 10 bytes from the beginning
char buf[20];
if (!infile.read(buf, 20)) { /* error */ }
// now your data is in buf
stdio 接口(interface)是相似的,但由于这是 C++,我们更喜欢 iostreams 接口(interface)。您绝不能在不检查其返回值的情况下使用 I/O 操作,在 iostream 中这很容易。对于 fread
,您必须小心以正确解释返回值。
关于c++ - C++中的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9854653/