Search code examples
c++charnon-ascii-characters

Chinese character too large for enclosing character literal type


I'm trying to assign the Chinese character 牛 as a char value in C++. On Xcode, I get the error:

"Character too large for enclosing character literal type."

When I use an online IDE like JDoodle or Browxy, I get the error:

"multi-character character constant."

It doesn't matter whether I use char, char16_t, char32_t or wchar_t, it won't work. I thought any Chinese character could at least fit into wchar_t, but this appears not to be the case. What can I do differently?

char letter = '牛';
char16_t character = '牛';
char32_t hanzi = '牛';
wchar_t word = '牛';

Solution

  • All of your character literals are standard chars. To get a wider type, you need to include the proper prefix on the literal:

    char letter = '牛';
    char16_t character = u'牛';
    char32_t hanzi = U'牛';
    wchar_t word = L'牛';