c++将二进制文件写入文件

标签 c++ binary iostream fstream

嗨,我正在尝试以二进制形式写入 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”但不是二进制。
谁能告诉我如何用二进制写它。

最佳答案

首先,你写错了size,可能会出界。使用 strlen 获取字符串的长度。

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

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

关于c++将二进制文件写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40960404/

相关文章:

java - 如果必须填充数组,我该如何使它们相等?

c - 复制二进制文件时何时使用 int 与 char 作为缓冲区?

c++ - 人为限制的ostream

C++ 在 cin 时忽略特定字符

流运算符的 C++ 问题

c++ - "using"语句中的自引用/循环引用

c++ - 裸函数原型(prototype)声明

c++ - 做什么? XXX!yyyyyyyyyy+zzz 表示 !heap -flt s 输出

C++ Unresolved external symbol 错误?

iphone - 反编译应用程序二进制文件以返回源代码