2

C++のWin32ソケットを介して送信する必要があるワイド文字のXMLメッセージがあります。

TCHAR wszBuffer[1024];

送信する前に、ワイド文字を配列にsprintf(szSendBuffer, "%S", wszBuffer)バッファリングする必要がありますか?char

これを送信する正しい方法は何ですか?

4

4 に答える 4

2

wszBufferをソケット関数に直接渡し、長さ= sizeof(wszBuffer)または1024 * sizeof(TCHAR)のchar*にキャストします。この場合、バッファはそのまま送信されます。

このテキストをANSI文字列として送信する場合は、任意の文字列変換関数で変換します。sprintfはOKです。別の方法はW2Aです。ただし、一部の情報が失われる可能性があります。

于 2010-08-24T10:58:13.227 に答える
1

XMLを扱っているので、ソケットを介して送信する前に、UTF-8またはその他のXML対応の文字エンコードでエンコードする(そしてそのエンコードをXMLのプロローグで指定する)必要があります。

于 2010-08-24T22:46:03.697 に答える
1

これを使用して、UTF-8(または、XMLファイルで宣言している限り、WideCharToMultiByteその他のベースのエンコーディング)に変換します。char

于 2010-08-26T05:49:41.473 に答える
0

単純にchar*にキャストできます。もう一方の端では、受信したバッファをwchar_t*にキャストするだけです。

于 2010-08-24T10:58:09.327 に答える