如何使用 C++ 覆盖二进制文件的一部分?
How to overwrite a portion of a binary file using C++?
我有一个二进制文件,假设在字节 11 到字节 14 处,代表一个整数 = 100。
现在我想替换那个整数值 = 200 而不是现有的。
我如何使用 C++ 做到这一点?
谢谢
T.
Google 是你的朋友。搜索“C++ 二进制文件”将为您提供一些有用的页面,例如:This useful link
简而言之,您可以这样做:
int main()
{
int x;
streampos pos;
ifstream infile;
infile.open("silly.dat", ios::binary | ios::in);
infile.seekp(243, ios::beg); // move 243 bytes into the file
infile.read(&x, sizeof(x));
pos = infile.tellg();
cout << "The file pointer is now at location " << pos << endl;
infile.seekp(0,ios::end); // seek to the end of the file
infile.seekp(-10, ios::cur); // back up 10 bytes
infile.close();
}
适合阅读。要打开文件进行输出:
ofstream outfile;
outfile.open("junk.dat", ios::binary | ios::out);
结合这两者并根据您的具体需求进行调整应该不会太难。
我有一个二进制文件,假设在字节 11 到字节 14 处,代表一个整数 = 100。 现在我想替换那个整数值 = 200 而不是现有的。
我如何使用 C++ 做到这一点? 谢谢 T.
Google 是你的朋友。搜索“C++ 二进制文件”将为您提供一些有用的页面,例如:This useful link
简而言之,您可以这样做:
int main()
{
int x;
streampos pos;
ifstream infile;
infile.open("silly.dat", ios::binary | ios::in);
infile.seekp(243, ios::beg); // move 243 bytes into the file
infile.read(&x, sizeof(x));
pos = infile.tellg();
cout << "The file pointer is now at location " << pos << endl;
infile.seekp(0,ios::end); // seek to the end of the file
infile.seekp(-10, ios::cur); // back up 10 bytes
infile.close();
}
适合阅读。要打开文件进行输出:
ofstream outfile;
outfile.open("junk.dat", ios::binary | ios::out);
结合这两者并根据您的具体需求进行调整应该不会太难。