我有一个宽字符XML消息,我需要通过C ++中的Win32套接字发送。
TCHAR wszBuffer[1024];
在发送之前我应该sprintf(szSendBuffer, "%S", wszBuffer)
宽字符缓冲区到char
数组吗?
发送此信息的正确方法是什么?
答案 0 :(得分:2)
将wszBuffer直接传递给套接字函数,将其转换为char *,其中length = sizeof(wszBuffer)或1024 * sizeof(TCHAR)。在这种情况下,缓冲区将按原样发送。
如果要将此文本作为ANSI字符串发送,请通过任何字符串转换函数进行转换。 sprintf没问题,另一种方式是W2A。但有些信息可能会丢失。
答案 1 :(得分:1)
由于您正在处理XML,因此需要先将其编码为UTF-8或其他XML友好的字符编码(并在XML的prolog中指定该编码),然后再通过套接字发送。
答案 2 :(得分:1)
使用WideCharToMultiByte
将其转换为UTF-8(或任何其他基于char
的编码,只要您在XML文件中声明它。)
答案 3 :(得分:0)
您可以简单地将其转换为char *。另一方面,您可以简单地将收到的缓冲区转换为wchar_t *。