gpt4 book ai didi

c++ - 如何在 JNI C++ 中将 char * 转换为 uchar16

转载 作者:行者123 更新时间:2023-11-27 23:33:31 27 4
gpt4 key购买 nike

这是我正在尝试做的事情:

typedef uint16_t uchar16_t;
uchar16_t buf[32];
// buf will contain timezone information like GMT-6, Eastern Daylight Time, etc

char * str = "Test";

for (int i = 0; i <= strlen(str); i++)
buf[i] = str[i];

我猜这是不正确的,因为 uchar16_t 将包含 2 个字节而 str 包含 1 个字节。

我应该做什么?

最佳答案

斯特伦?缓冲器[32]?想要毁灭宇宙?

您想使用 wstringstream。

std::wstringstream lols;
lols << "Test";
std::wstring cakes;
lols >> cakes;

编辑@评论:您不应该使用 strlen,因为任何体面的字符串系统都允许嵌入零,而 strlen 非常慢。此外,您没有根据需要调整缓冲区的大小,因此如果字符串的大小大于 31,就会出现缓冲区溢出。此外,您之后必须(如果您动态调整缓冲区大小)手动释放它。这两件事都是 C 字符串系统的严重缺陷。我的示例代码让您的标准库编写者完成所有工作并为您避免所有这些问题。

关于c++ - 如何在 JNI C++ 中将 char * 转换为 uchar16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3025450/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com