L'invio di TCHAR buffer con send (calzino, wszBuffer, ...)?
-
30-09-2019 - |
Domanda
Ho un messaggio XML a livello di carattere che ho bisogno di inviare più di una presa di Win32 in C ++.
TCHAR wszBuffer[1024];
Dovrei sprintf(szSendBuffer, "%S", wszBuffer)
il buffer di caratteri estesi a un array char
prima di inviarlo?
Qual è il modo corretto per inviare questo?
Soluzione
Passo wszBuffer direttamente alla funzione presa, colata a char *, con lunghezza = sizeof (wszBuffer), o 1024 * sizeof (TCHAR). In questo caso il buffer sarà trasmette come è.
Se si desidera inviare questo testo come stringa ANSI, convertirlo da qualsiasi funzione di stringa di conversione. sprintf è OK, un altro modo è W2A. Ma alcune informazioni possono essere perse.
Altri suggerimenti
Dal momento che avete a che fare con XML, è necessario codificare in UTF-8 o altra codifica dei caratteri XML-friendly (e specificare che la codifica nel prologo del XML) prima di inviare sopra la presa.
Usa WideCharToMultiByte
per convertirlo in UTF-8 (o qualsiasi altra codifica char
-based, a patto che si dichiara nel file XML).
Si può semplicemente lanciarlo a un char *. D'altra estremità si può semplicemente lanciare il buffer ricevuto a * wchar_t.