使用 send(sock, wszBuffer, ...) 发送 TCHAR 缓冲区?

发布于 2024-09-16 09:04:14 字数 220 浏览 9 评论 0原文

我有一条宽字符 XML 消息,需要通过 C++ 中的 Win32 套接字发送。

TCHAR wszBuffer[1024];

我应该在发送之前将宽字符缓冲区 sprintf(szSendBuffer, "%S", wszBuffer) 转换为 char 数组吗?

发送这个的正确方法是什么?

I have a wide-character XML message that I need to send over a Win32 socket in C++.

TCHAR wszBuffer[1024];

Should I sprintf(szSendBuffer, "%S", wszBuffer) the wide character buffer to a char array before sending it?

What is the correct way to send this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

野味少女 2024-09-23 09:04:14

将 wszBuffer 直接传递给套接字函数,将其转换为 char*,长度 = sizeof(wszBuffer) 或 1024 * sizeof(TCHAR)。在这种情况下,缓冲区将按原样发送。

如果您想将此文本作为 ANSI 字符串发送,请使用任何字符串转换函数将其转换。 sprintf可以,另一种方式是W2A。但有些信息可能会丢失。

Pass wszBuffer directly to the socket function, casting it to char*, with length = sizeof(wszBuffer), or 1024 * sizeof(TCHAR). In this case the buffer will be send as is.

If you want to send this text as ANSI string, convert it by any string convertion function. sprintf is OK, another way is W2A. But some information may be lost.

旧梦荧光笔 2024-09-23 09:04:14

由于您正在处理 XML,因此需要在通过套接字发送之前将其编码为 UTF-8 或其他 XML 友好的字符编码(并在 XML 的序言中指定该编码)。

Since you are dealing with XML, you need to encode it in UTF-8 or other XML-friendly character encoding (and specify that encoding in the XML's prolog) before sending it over the socket.

老旧海报 2024-09-23 09:04:14

使用 WideCharToMultiByte 将其转换为 UTF-8(或任何其他基于 char 的编码,只要您在 XML 文件中声明它)。

Use WideCharToMultiByte to convert it to UTF-8 (or any other char-based encoding, as long as you declare it in the XML file).

两人的回忆 2024-09-23 09:04:14

您只需将其转换为 char* 即可。在另一端,您可以简单地将接收到的缓冲区转换为 wchar_t*。

You can simply cast it to a char*. On the other end you can simply cast the recieved buffer to wchar_t*.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文