Enviando TCHAR buffer con send (calcetín, wszBuffer, ...)?
-
30-09-2019 - |
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?
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 *.