UEFI编程:如何初始化一个CHAR16 Unicode字符串?
UEFI programming: How to Initialize a CHAR16 Unicode String?
我必须使用一些 char16 宽的字符串进行 uefi 编程。我怎样才能轻松地初始化它们?
CHAR8 很简单:
CHAR8 *Str = "yehaw[=10=]";
同时 CHAR16 很辛苦,所以我选择了这个初始化:
CHAR16 *Str;
Str = AllocatePool(6*2); //AllocatePool allocates bytewise
Str = ('y','e','h','a','w','\o');
所以问题是初始化 CHAR16 字符串的正确和最简单的方法是什么?
试试这个
CHAR16 *Str = u"yehaw[=10=]";
如果您有 c 标准库并且正在使用符合 C/C++ 的编译器,通常在字符串前加上 L 对 declared strings.As in :
CHAR16 *Str = L"yehaw";
有效。但是,为什么不使用普遍接受的类型
wchar_t
?
"An array with element type compatible with a qualified or unqualified version of wchar_t, char16_t, or char32_t may be initialized by a wide string literal with the corresponding encoding prefix (L, u, or U, respectively)" C11 §6.7.9 15
如果 CHAR16
与 char16_t
相同,则使用
Str = u"yehaw";
我必须使用一些 char16 宽的字符串进行 uefi 编程。我怎样才能轻松地初始化它们? CHAR8 很简单:
CHAR8 *Str = "yehaw[=10=]";
同时 CHAR16 很辛苦,所以我选择了这个初始化:
CHAR16 *Str;
Str = AllocatePool(6*2); //AllocatePool allocates bytewise
Str = ('y','e','h','a','w','\o');
所以问题是初始化 CHAR16 字符串的正确和最简单的方法是什么?
试试这个
CHAR16 *Str = u"yehaw[=10=]";
如果您有 c 标准库并且正在使用符合 C/C++ 的编译器,通常在字符串前加上 L 对 declared strings.As in :
CHAR16 *Str = L"yehaw";
有效。但是,为什么不使用普遍接受的类型
wchar_t
?
"An array with element type compatible with a qualified or unqualified version of wchar_t, char16_t, or char32_t may be initialized by a wide string literal with the corresponding encoding prefix (L, u, or U, respectively)" C11 §6.7.9 15
如果 CHAR16
与 char16_t
相同,则使用
Str = u"yehaw";