如何将阿拉伯符号存储到wchat_t或char32_t中



编译器:clang 3.5.0

以下代码与我预期的一样有效:

#include <iostream>
char cp[] = "ي";
int main()
{
    std::cout << cp; //Prints ي
}

演示

但如果我们试图将该符号存储到char32_twchar_t中,就会出现错误:

#include <iostream>
wchar_t t = 'ي'; //character too large for enclosing character literal type
int main(){ }

演示

是否可以将这样的符号存储到wchar_tchar32_t对象中?我怀疑这取决于我使用的特定编译器和操作系统。

  1. 使用L"ي"将其放入wchar_t中,然后使用std::wcout打印出来:
  2. 使用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:如果你试图编写无法在默认语言环境中表示的文本,这是不起作用的。

相关内容

  • 没有找到相关文章

最新更新