转换为char*c++后丢失字符串数据
Losing string data after convert to char* c++
我目前正在学习如何使用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:9HTTP://1.1 200 OK日期:2012年8月29日星期三00:58:25 GMT服务器:Apache/2.2.16(Debian)上次修改时间:2012年8月28日星期二18:34:36 GMTETag:"13e4735-136-4c857b1b54700"接受范围:字节保持活力:超时=15,最大值=99内容类型:image/png内容长度:310连接:保持活动�PNG-
IHDR��o�|d�IT pH��B�4.�tExt软件Macromedia Fireworks MX��*$tEXt创建时间12/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
看起来您试图将二进制文件视为字符串。
一旦遇到