現在、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;
}
出力: Sending HTTP Response[608]: FD:9 HTTP/1.1 200 OK Date: Wed, 29 Aug 2012 00:58:25 GMT Server: Apache/2.2.16 (Debian) Last-Modified: Tue, 28 Aug 2012 18 :34:36 GMT ETag: "13e4735-136-4c857b1b54700" Accept-Ranges: bytes Keep-Alive: timeout=15, max=99 Content-Type: image/png Content-Length: 310 Connection: keep-alive �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