Pregunta

Tengo un mensaje XML de caracteres anchos que tengo que enviar a través de una toma de Win32 en C ++.

TCHAR wszBuffer[1024];

¿Debo sprintf(szSendBuffer, "%S", wszBuffer) la amplia memoria intermedia de caracteres a una matriz char antes de enviarlo?

¿Cuál es la forma correcta para enviar esta?

¿Fue útil?

Solución

Pass wszBuffer directamente a la función de socket, fundición a char *, con = longitud sizeof (wszBuffer), o 1,024 * sizeof (TCHAR). En este caso, se envía el búfer como es.

Si desea enviar este texto como cadena ANSI, convertir por cualquier función de cadena de conversión. sprintf está bien, otra forma es W2A. Sin embargo, algunos datos pueden perderse.

Otros consejos

Dado que se trata de XML, es necesario codificar en UTF-8 u otra codificación de caracteres XML-amable (y especificar que la codificación en el prólogo del XML) antes de enviarlos a través de la toma de corriente.

Uso WideCharToMultiByte para convertirlo en UTF-8 (o cualquier otra codificación basada en char, siempre y cuando se declara en el archivo XML).

Se puede simplemente echarlo a un char *. En el otro extremo simplemente puede emitir el búfer recibido a wchar_t *.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top