gpt4 book ai didi

当我尝试写入 'const char *' 时,c++ 给了我标准字符串/损坏的数据而不是二进制数据

转载 作者:行者123 更新时间:2023-11-29 14:03:34 28 4
gpt4 key购买 nike

<分区>

在 C++(Visual C++ MFC)中我有 char *这是来自数据库。这其实是一张图片。 PostgreSQL 将它作为 char * 返回,因为在 C++ 中没有 byte[](据我所知-还-:))

问题是,我试着像这样写那个图像:

ofstream myFile ("C:\\picture.jpg", ios::out | ios::binary);
myFile.write(contents, size);
myFile.close();

输出如下:

\xffd8ffe000104a46494600010101006000600000ffe1005a4578696600.......

我试图将内容更改为 reinterpret_cast<char *>(&contents)然后我得到的二进制数据很少,但很少。其余的不在文件中。

这个我也试过:

fstream binary_file("C:\\picture.jpg", ios::out | ios::binary | ios::app);
binary_file.write(reinterpret_cast<char *>(&contents),size);
binary_file.close();

对于 reinterpret_cast<char *>(&contents) 两者或者没有它。文件中的字节数据仍然很少。没有了。

我也试过改size .大小来自 postgresql 的 PQgetlength方法,所以这是肯定的。 (不会错吧?)

我终于给了size我自己对 C++ 说它是 5000 .它输出带有 5.000 的二进制数据,但事实是,它不符合原始文件。它以“h”开头,然后是不同的东西......

我还尝试将此数据加载到 Chilkat 的 ByteArray,然后使用其 oen 文件访问方法写入。仍然得到与 \xfdd... 相同的结果.

那么,主要目标是什么?我在这里错过了什么?任何帮助将不胜感激。

编辑:是char *。抱歉造成误会。

结论:由于我的需要,我选择了 Craig Ringer* 的解决方案。但由于这个问题的性质,我选择 H2CO3 的答案作为可接受的答案。

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