gpt4 book ai didi

C++/ATL。连接二进制和文本数据的最佳实践

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

我必须创建 BYTE* 数组来为 Http 请求存储一些文本和二进制数据。像这样的东西:

Content-Type: multipart/form-data; boundary=Asrf456BGe4h

--Asrf456BGe4h
Content-Disposition: form-data; name="DestAddress"
...
--Asrf456BGe4h
Content-Disposition: form-data; name="AttachedFile1"; filename="photo.jpg"
Content-Type: image/jpeg
...binary data...

我不敢使用标准的 atl 字符串,因为它们会截断我的二进制文件。你会如何连接这些东西?我想这样编程:

DynamicArray arr();
arr.Add("Content-Type ... ");
arr.Add(imgContent, imgContentSize);
arr.Add("Content-Type...");

BYTE* buf;
arr.GetBits(buf);

最后我应该有 BYTE* 数组。哪些 ATL 类应该为我提供这样的功能?

最佳答案

首先,您可以将原始数据放入 std::string 中没有发生任何问题的风险。这可能会使期望 std::string 的读者感到困惑包含文本,但在特定情况下(将原始数据插入 HTTP 响应可能是一个有效示例),这是合理的。

第二,我不确定“截断我的二进制文件”是什么意思。如果文件以二进制方式读写,应该没有问题;在我熟悉的系统(Unix 和 Windows)上肯定没有。

最后,虽然我不确定如何 BYTE已定义(可能——或者至少希望——是 unsigned char )。在这种情况下,最简单的解决方案可能是使用 std::vector<BYTE>建立缓冲区。向其附加一个字符串:

buffer.append( str.begin(), str.end() );

(charunsigned char 的隐式转换在这里起到了作用。)

关于C++/ATL。连接二进制和文本数据的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6580315/

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