K Man
K Man

Reputation: 628

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 = '牛';

Upvotes: 4

Views: 9028

Answers (1)

1201ProgramAlarm
1201ProgramAlarm

Reputation: 32727

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'牛';

Upvotes: 14

Related Questions