gpt4 book ai didi

c++ - 如何以字节为单位获取 UTF-16LE 字符串的大小?

转载 作者:行者123 更新时间:2023-11-28 06:18:23 25 4
gpt4 key购买 nike

假设我有以下内容:

wchar_t *str = L"Hello World!";

我想获取 L"Hello World!" 的字节数(而不是它包含多少个字符)。

我读过wcslen() 将每 2 个字节计为 1 个字符,所以如果一个字符是 4 个字节,它会将其视为 2 个字符!

这对我来说很棒,因为现在我可以做到:

int size_of_str_in_bytes = wcslen(str) * 2;

但是是否可以保证 wcslen() 将始终以这种方式运行?

最佳答案

好吧,wcslen 总是会为您提供 wchar_t 的数量。它类似于 strlen

(请注意,就像 strlen 一样,包含终止“空”字符!)

这与“将每 2 个字节计为 1 个字符” 不太一样,尽管对于 wchar_t 为 2 个字节宽的系统,效果是相同的.

不过,我会使用 sizeof(wchar_t) 而不是 2。你知道,为了便携性和所有这些。

比如Coliru的平台有sizeof(wchar_t) == 4:

#include <cwchar>
#include <cassert>

int main()
{
const wchar_t* wstr = L"Hello world";
const size_t size_of_wide_cstr_in_bytes = wcslen(wstr) * sizeof(wchar_t);

assert(sizeof(wchar_t) == 4); // on this particular system
assert(size_of_wide_cstr_in_bytes == 44); // on this particular system
}

( live demo )

关于c++ - 如何以字节为单位获取 UTF-16LE 字符串的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29794506/

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