Clang Locale Проблема на MacOS при обработке широких персонажейC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Clang Locale Проблема на MacOS при обработке широких персонажей

Сообщение Anonymous »

Я сейчас работаю над проектом C ++ на MacOS, используя Clang в качестве компилятора. Я столкнулся с проблемой, связанной с настройками локали при работе с широкими символами.
Вот упрощенная версия моего кода: < /p>
#include
#include
#include
using namespace std;
int main() {
locale zhLocale("");
wcin.imbue(zhLocale);
wcout.imbue(zhLocale);

wstring input;
getline(wcin, input);
wcout
你好
< /code>
output: < /p>
你你你好
< /code>
Во время отладки обнаружено, что входная переменная становится L "\ U00000002 \ U00000002 你你你好" < /p>
В запуске и отладке я вижу Ввод был неправильным < /p>
И это мои переменные среды: < /p>
$ clang++ --version
Apple clang version 16.0.0 (clang-1600.0.26.6)
Target: arm64-apple-darwin24.3.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

$ locale
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL=
< /code>
Я был бы признателен, если бы кто -то мог бы помочь мне выяснить, что происходит и как это исправить. Это ошибка в обработке кланг настройки локали на macOS, или я делаю что -то не так в своем коде? Для ввода и правильного поведения программы < /p>

Когда я удаляю Irbue, этот кусок кода работает так же, как Cin. < /p>
#include
#include
#include
using namespace std;
int main() {
wstring input;
getline(wcin, input);
wcout
你好
< /code>
Однако, когда я открываю отладчик и проверяю содержание входов, содержание в массиве данных - [l '\ u0000fffd', l '\ u00000001, L' \ U00000006 ' , L '\ 0', l '\ n'] вместо ['你', '好'] как я и ожидал. В этом случае я не могу повторить отдельные китайские иероглифы. Это то же самое, что и с использованием CIN, и я также не могу повторить отдельные китайские иероглифы при использовании CIN.


Подробнее здесь: https://stackoverflow.com/questions/794 ... characters
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»