3

我必须使用一些 char16 宽的字符串来进行 uefi 编程。如何轻松初始化它们?CHAR8 很简单:

CHAR8 *Str = "yehaw\0";

CHAR16 同时以这种方式努力工作,因此我选择了这个初始化:

CHAR16 *Str;
Str = AllocatePool(6*2); //AllocatePool allocates bytewise
Str = ('y','e','h','a','w','\o');

所以问题是初始化 CHAR16 字符串的正确和最简单的方法是什么?

4

3 回答 3

3

如果您有 c 标准库并且正在使用符合标准的 C/C++ 编译器,通常使用 L 作为前缀的字符串适用于声明的字符串。如:

 CHAR16 *Str =  L"yehaw";

作品。但是,为什么不使用普遍接受的类型

 wchar_t

?

于 2016-01-22T23:18:44.213 回答
1

试试这个

CHAR16 *Str = u"yehaw\0";
于 2016-01-22T23:18:10.000 回答
0

“元素类型与 wchar_t、char16_t 或 char32_t 的合格或非合格版本兼容的数组可以由具有相应编码前缀(分别为 L、u 或 U)的宽字符串文字初始化”C11 §6.7.9 15

如果CHAR16与 相同char16_t,则使用

Str = u"yehaw";
于 2016-01-22T23:30:27.010 回答