Почему C ++ std :: string может поддерживать символы на японском и французском языках? - PullRequest
0 голосов
/ 17 декабря 2018

Ранее я думал, что C ++ std :: string может поддерживать только наборы символов ASCII.Для других наборов символов, например, французских, японских символов, потребуется кодировка, например, UTF-8 / UTF-16.

Я просто попробую приведенный ниже код, и кажется, что C ++ std :: string уже поддерживает японскийперсонажи и французский.Угадай также поддержку всех других языков.

Как это может произойти?Значит ли это, что нам просто нужен std :: string для обработки всех человеческих языков?

string s;

s = "今年1年の世相を4字で振り返る恒例の「創作四字熟語」の優秀・入選50作品を発表した";

string t;

t = "Vélo, sac, appareil photo: bleu en un «Klein» d'œil pour Noël";

cout<<s<<'\n';

cout<<t<<'\n';

Вывод:

今年 1 年 の 世 相 相101 」の 優秀 ・ 入選 50 作 を を 101 101 表 101 101

Vélo, sac, appareil photo: bleu en un« Klein »d'œil pour Noël

1 Ответ

0 голосов
/ 17 декабря 2018

A std::string может поддерживать произвольный поток байтов, включая UTF-8, который вы видите здесь.Со стороны ввода ваш компилятор, очевидно, поддерживает его, а со стороны вывода - ваша терминальная программа.

Если все может сломаться, если вы предполагаете в своем коде, что один char в вашем std:: string соответствуетдо одного символа на экране.Это не так для UTF-8, как вы, наверное, уже знаете.

...