c ++将二进制文件写入文件
c++ Writing binary to a file
嗨,我正在尝试以二进制形式写入 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" 但不是二进制。
谁能告诉我如何用二进制写它。
首先,你写错了尺寸,可能会出界。使用 strlen
来获取字符串的长度。
其次,想一想像'a'
这样的字母是如何存储在计算机内存中的。它存储在编译器和操作系统使用的任何编码中,这很可能是 ASCII。当您将该字母写入文件时,它会将存储在内存中的值写入文件,如果您使用能够破译编码的程序读取文件,它会向您显示该字母。
我只是在猜测,但我认为您希望二进制格式将实际的 1 和 0 写入文本。那么你 do 写 1 和 0,不是作为文本而是作为单独的位。当所有这些位组合成字节时,您将获得存储在内存中的字节。如果您在十六进制编辑器中查看该文件,您将看到实际值,您甚至可以找到一个程序,将实际二进制值显示为 1 和 0。
嗨,我正在尝试以二进制形式写入 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" 但不是二进制。
谁能告诉我如何用二进制写它。
首先,你写错了尺寸,可能会出界。使用 strlen
来获取字符串的长度。
其次,想一想像'a'
这样的字母是如何存储在计算机内存中的。它存储在编译器和操作系统使用的任何编码中,这很可能是 ASCII。当您将该字母写入文件时,它会将存储在内存中的值写入文件,如果您使用能够破译编码的程序读取文件,它会向您显示该字母。
我只是在猜测,但我认为您希望二进制格式将实际的 1 和 0 写入文本。那么你 do 写 1 和 0,不是作为文本而是作为单独的位。当所有这些位组合成字节时,您将获得存储在内存中的字节。如果您在十六进制编辑器中查看该文件,您将看到实际值,您甚至可以找到一个程序,将实际二进制值显示为 1 和 0。