我目前正在学习如何使用 libcurl 开发 HTTP 代理。成功获得 HTTP 响应后,我将它们写入字符串,然后再使用回调函数进行进一步处理。在进一步的处理功能中,我首先需要将这些字符串转换为 char*,这会导致那些 HTTP 响应包含 png 和 gif 等图像数据的数据丢失问题。而其余的 HTTP 响应包含纯文本数据,如 HTML 和 css 工作正常。
我的疑问和问题是为什么 c_str() 函数在转换过程中消除了像图像数据这样的不可读数据?有没有办法解决这个丢失数据的问题?
代码:char* sData_source_ ;
void Client::send(string msg)
{
sData_source_ = (char*)msg.c_str();
cout << "Your string is " << strlen(sData_source_)<<endl;
}
输出:发送 HTTP 响应 [608]:FD:9 HTTP/1.1 200 OK 日期:2012 年 8 月 29 日星期三 00:58:25 GMT 服务器:Apache/2.2.16 (Debian) 最后修改时间:2012 年 8 月 28 日星期二 18 :34:36 GMT ETag:“13e4735-136-4c857b1b54700”接受范围:字节保持活动:超时 = 15,最大 = 99 内容类型:图像/PNG 内容长度:310 连接:保持活动 �PNG
IHDR.o.|d.IT pHYs..B.4. tEXtSoftwareMacromedia Fireworks MX.*$tEXtCreation Time12/06/04g.m.IDATx..1. E.u.r -.R).] X֚��w�<Ѱ�1F���������� tX��!�Z��=:$TJ��{�3�CRgb:$v4v�Cb��(��� B��!tH�L�[k�_wx8/:,@������ xQ�2]�|��IEND�B`� 你的字符串是 306
注意:正如你们可以从上面的输出中观察到的那样,最初的总 HTTP 响应是 608 字节。但是,使用 c_str() 函数转换后变为 306。
谢谢你,期待有人回复。:D