gpt4 book ai didi

c++ - 如何使动态字符串在控制台中使用 UTF-8?

转载 作者:行者123 更新时间:2023-11-28 02:46:14 24 4
gpt4 key购买 nike

大部分 answersquestions此处 SO 用于将 L 放在任何 UTF-8 字符串之前。我没有找到它是什么的解释,在源代码中,根据我的 IDE,常量是在 winnt.h 中定义的。

这是我在不知道它是什么的情况下使用它的方式:

std::wcout<<L"\"Přetečení zásobníku\" is Stack overflow in Czech.";

显然,常量串联不能应用于变量:

void printUTF8(const char* str) {
//Does not make the slightest bit of sense
std::wcout<<L str;
}

那么它是什么以及如何将它添加到动态字符串中?

最佳答案

L"" 是一个 WIDE 字符串。也就是说,它是一个wchar_t[1]。 UTF-8 字符串不能很宽,因为它们是多字节(可变长度)。 VC++ 有点错误,它使宽字符串变长,准确地说是 UTF-16。但通常它们是 UTF-32。

多字节字符串的问题在于存在多种不同的编码方式,而UTF-8只是其中一种。 Windows 实际上并不原生支持 UTF-8 编码。 MessageBoxA() 例如可以使用除 UTF-8 之外的任何编码。只有一个异常(exception),即 MultiByteToWideChar(CP_UTF8, ...),这是您在这里需要的。

关于c++ - 如何使动态字符串在控制台中使用 UTF-8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24307072/

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