已关闭,此问题需要details or clarity。它目前不接受回答。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。
3天前关闭。
Improve this question
我试图在过去的5天,以找出如何使我的程序说,如果十六进制值是34,然后将其更改为32:
如果值是2C,则将其更改为2B:
到目前为止,我一直在处理这段代码:
#include <fstream>
#include <iostream>
int main()
{
int value;
if (value > 0x34)
{
std::fstream binaryFile("test.tex", std::ios::in | std::ios::out | std::ios::binary);
binaryFile.seekp(0x18/*offsetToWrite*/);
binaryFile << char(0x32/*ValueToReplace*/);
}
else if (value < 0x2C) {
std::fstream binaryFile("test.tex", std::ios::in | std::ios::out | std::ios::binary);
binaryFile.seekp(0x18/*offsetToWrite*/);
binaryFile << char(0x2B/*ValueToReplace*/);
}
}
我尝试使用if
、else if
语句,但它们不起作用。
1条答案
按热度按时间gg58donl1#
你的
value
变量是 uninitialized,所以你的第一个if
语句有 undefined behavior。你需要先打开文件,查找到所需的位置,从文件中读取值,然后比较值,如果需要的话,然后查找回前一个位置,并将新值写入文件。
此外,
int
在这种情况下是错误的数据类型,流需要char
类型。而且,当在以二进制模式打开的文件上执行I/O时,不应该使用operator<<
,而应该使用put()
或write()
方法。operator>>
和get()
也是如此。不要忘记错误检查!
试试类似这样的东西: