Отправка буфера TCHAL с отправкой (носок, wszbuffer, ...)?
-
30-09-2019 - |
Вопрос
У меня широко персонажа 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 *.