【发布时间】:2021-03-06 09:19:23
【问题描述】:
所以问题是,当使用 c# 时,char 是 4 个字节,所以“abc”是 (65 0 66 0 67 0)。
当通过在套接字中发送将其输入到 c++ 中的 wstring 时,我得到以下输出 a.
如何将这样的字符串转换为 c++ 字符串?
【问题讨论】:
-
i get the following output a.这是因为您尝试将字节作为std:string,它仅适用于单字节代码页,或者由于 C++ 中缺乏标准化,UTF8。这将第一个空字节解释为字符串的结尾。您应该使用std::u16string来读取 UTF16 字节。 -
顺便说一句,您没有发布您的 C# 或 C++ 代码,但该错误表明您正在尝试从 C++ 一次读取一个字符串。为此,您需要通过发出适当的 NUL 来终止 C# 端的字符串:对于 UTF8 来说是一个
0x00字节,对于 UTF16 来说是两个0x00。 -
char 是 4 个字节:不,两个字节
标签: c# c++ unicode encoding utf-16