【问题标题】:c++ Writing binary to a filec++ 将二进制文件写入文件
【发布时间】:2016-12-04 15:47:39
【问题描述】:

您好,我正在尝试以二进制格式写入 txt 文件。
现在我写了这段代码:

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    char* f = "abc";
    ofstream ofile("D:\\foobar.txt", ios_base::out | ios_base::binary);
    ofile.write(f, sizeof(char*));
    return 0;
}

现在它写“abc”但不是二进制。
有人可以告诉我如何用二进制编写它。

【问题讨论】:

    标签: c++ binary iostream fstream


    【解决方案1】:

    首先,你写错了大小,可能会超出范围。改用strlen 来获取字符串的长度。

    其次,想想像'a'这样的字母是如何存储在计算机的内存中的。它存储在编译器和操作系统使用的任何编码中,很可能是ASCII。当您将该字母写入文件时,它将存储在内存中的值写入文件,如果您使用能够破译编码的程序读取文件,它将显示该字母。

    我只是在这里猜测,但我认为您希望二进制格式将实际的 1 和 0 写入文本。好吧,您确实写了 1 和 0,不是作为文本,而是作为单个位。当所有这些位组合成字节时,您会得到存储在内存中的字节。如果您在十六进制编辑器中查看文件,您将获得实际值,您甚至可以找到一个程序将实际二进制值显示为 1 和 0。

    【讨论】:

    • 这也是我的理论。我想我的书描述的不够好
    猜你喜欢
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    相关资源
    最近更新 更多