C++のWin32ソケットを介して送信する必要があるワイド文字のXMLメッセージがあります。
TCHAR wszBuffer[1024];
送信する前に、ワイド文字を配列にsprintf(szSendBuffer, "%S", wszBuffer)
バッファリングする必要がありますか?char
これを送信する正しい方法は何ですか?
C++のWin32ソケットを介して送信する必要があるワイド文字のXMLメッセージがあります。
TCHAR wszBuffer[1024];
送信する前に、ワイド文字を配列にsprintf(szSendBuffer, "%S", wszBuffer)
バッファリングする必要がありますか?char
これを送信する正しい方法は何ですか?
wszBufferをソケット関数に直接渡し、長さ= sizeof(wszBuffer)または1024 * sizeof(TCHAR)のchar*にキャストします。この場合、バッファはそのまま送信されます。
このテキストをANSI文字列として送信する場合は、任意の文字列変換関数で変換します。sprintfはOKです。別の方法はW2Aです。ただし、一部の情報が失われる可能性があります。
XMLを扱っているので、ソケットを介して送信する前に、UTF-8またはその他のXML対応の文字エンコードでエンコードする(そしてそのエンコードをXMLのプロローグで指定する)必要があります。
これを使用して、UTF-8(または、XMLファイルで宣言している限り、WideCharToMultiByte
その他のベースのエンコーディング)に変換します。char
単純にchar*にキャストできます。もう一方の端では、受信したバッファをwchar_t*にキャストするだけです。