1

我正在用 C++ 编写一个非常简单的程序,将引导扇区从一个文件复制到另一个文件。我的代码是:

#include <fstream>

int main ()
{
    char buffer[512];
    std::fstream myfile ("boot.bin", std::ios::binary || std::ios::in);

    myfile.seekg(0);
    myfile.read(buffer, 512);
    myfile.close();

    myfile.open("boot.img", std::ios::binary || std::ios::out);
    myfile.seekp(0);
    myfile.write(buffer, 512);
    myfile.close();

    return 0;
}

但是,当我尝试编译时,出现错误:

链接:
  生成代码
  完成生成代码
Bootcopy.vcxproj -> c:\users\xxx\documents\visual studio 2010\Projects\Bootcopy\Release\Bootcopy.exe
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4 .0\Microsoft.CppCommon.targets(562,5):错误 MSB6006:“mt.exe”以代码 31 退出。

我已经用谷歌搜索了这个错误,但我只找到了对我不起作用的解决方案。奇怪的是,如果我重建解决方案(Build > Rebuild Solution 或 CTRL + ALT + F7),我能够编译代码。当我正常编译时,我得到一个“构建失败”(如果这是重建后的第一个构建),或者一个“构建成功”(如果我改变了一些东西)。

此外,生成的可执行文件似乎不起作用。这个想法是将前 512 个字节从 boot.bin 复制到 boot.img。字节似乎读取正确(我在代码中输入了“cout << buffer”,并且字符串被正确打印到第一个空字符),但没有写入 boot.img。当我将 boot.img 更改为不存在的文件时,没有创建文件。当我在调试器中运行程序时,我没有收到任何错误(即使两个文件在项目目录中都不存在)。

4

1 回答 1

1
std::ifstream myfile("boot.bin", std::ios::binary || std::ios::in);

是“||” 允许吗?

检查

“|” 单管

std::ifstream myfile("boot.bin", std::ios::binary | std::ios::in);
于 2013-09-15T14:40:12.007 回答