Вопрос

У меня широко персонажа XML-сообщение, которое мне нужно для отправки сокета Win32 в C ++.

TCHAR wszBuffer[1024];

Нужно ли мне sprintf(szSendBuffer, "%S", wszBuffer) Широкий буфер символов до char Массив перед отправкой этого?

Какой правильный способ отправить это?

Это было полезно?

Решение

Передайте wszbuffer непосредственно к функции сокета, отличая ее для char *, с длиной = sizeof (wszbuffer) или 1024 * sizeof (tchar). В этом случае буфер будет отправлен как есть.

Если вы хотите отправить этот текст в качестве строки ANSI, преобразуйте его любым функцией строки. Спринтф в порядке, другой путь - W2A. Но некоторая информация может быть потеряна.

Другие советы

Поскольку вы имеете дело с XML, вам нужно кодировать его в UTF-8 или другом XML-элементом кодировке символов (и указать, что кодировка в прологе XML) перед отправкой его на сокет.

Использовать WideCharToMultiByte преобразовать его в UTF-8 (или любой другой char-Бозное кодирование, до тех пор, пока вы объявляете его в XML-файле).

Вы можете просто бросить его в Char *. На другом конце вы можете просто отбросить полученный буфер в WCRA_T *.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top