gpt4 book ai didi

c++ - fwrite 字符串中的二进制数据

转载 作者:行者123 更新时间:2023-11-30 01:08:42 28 4
gpt4 key购买 nike

我想创建一个文件并将“A”写入其中(ascii 是 65 == 01000001)。奇怪的是,无论std::string binary 的值是什么,myfile.txt 中总是写着字母P。

    std::string binary = "01000001";
std::string file = "myfile.txt";
FILE* f;
f = fopen(file.c_str(), "wb");
fwrite(&binary, 1, 1, f);
fclose(f);

执行此代码后,我使用命令 xxd -b myfile 读取二进制数据,我得到了这个:

00000000: 01010000

你看到这段代码有问题吗?

最佳答案

fwrite(&binary, 1, 1, f);

您将 std::string 的指针传递给 fwrite,这很糟糕。

您需要通过调用 c_str() 获取指向字符串内部缓冲区的指针:

fwrite(binary.c_str(), 1, 1, f);  

这是不使用 C 文件句柄的另一个原因,fwrite 的第一个参数是 const void*,这就是您的编译器没有给您错误的原因首先。

关于c++ - fwrite 字符串中的二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41634799/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com