Question

J'ai un message XML grand caractère que je dois envoyer sur un socket Win32 en C ++.

TCHAR wszBuffer[1024];

Devrais-je sprintf(szSendBuffer, "%S", wszBuffer) le tampon de caractère large à un tableau de char avant de l'envoyer?

Quelle est la bonne façon d'envoyer cela?

Était-ce utile?

La solution

Col ??wszBuffer directement à la fonction de prise de courant, la coulée à char *, avec = longueur de (wszBuffer), ou 1024 * sizeof (TCHAR). Dans ce cas, sera envoyer le tampon comme est.

Si vous voulez envoyer ce texte sous forme de chaîne ANSI, le convertir par une fonction de convertion de chaîne. sprintf est OK, une autre façon est W2A. Mais certaines informations peuvent être perdues.

Autres conseils

Puisque vous traitez avec XML, vous devez encoder en caractères UTF-8 ou un autre XML convivial encodage (et préciser que le codage dans le Prolog du XML) avant de l'envoyer sur le socket.

Utilisez WideCharToMultiByte pour le convertir en UTF-8 (ou tout autre encodage à base char, aussi longtemps que vous déclarez dans le fichier XML).

Vous pouvez simplement le jeter à un char *. À l'autre extrémité, vous pouvez simplement jeter le tampon recieved à wchar_t *.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top