Я сейчас работаю над проектом 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
Clang Locale Проблема на MacOS при обработке широких персонажей ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
MacOS Clang Compiler выпуск (Apple Clang версия 17.0.0 (Clang-1700.0.13.5))))
Anonymous » » в форуме C++ - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему Linux Clang и macOS Clang расходятся во мнениях по поводу long long и int64_t?
Anonymous » » в форуме Linux - 0 Ответы
- 24 Просмотры
-
Последнее сообщение Anonymous
-