编译器:clang 3.5.0
以下代码与我预期的一样有效:
#include <iostream>
char cp[] = "ي";
int main()
{
std::cout << cp; //Prints ي
}
演示
但如果我们试图将该符号存储到char32_t
或wchar_t
中,就会出现错误:
#include <iostream>
wchar_t t = 'ي'; //character too large for enclosing character literal type
int main(){ }
演示
是否可以将这样的符号存储到wchar_t
或char32_t
对象中?我怀疑这取决于我使用的特定编译器和操作系统。
- 使用
L"ي"
将其放入wchar_t
中,然后使用std::wcout
打印出来: -
使用
U"ي"
将其放入char32_t
中,然后在wchar_t
:铸造后使用std::wcout
打印出来#include <iostream> wchar_t cp[] = L"ي"; char32_t cp2[] = U"ي"; int main() { std::wcout << cp; // Prints ي std::wcout << (wchar_t) cp2; // Prints ي }
PS:如果你试图编写无法在默认语言环境中表示的文本,这是不起作用的。