Как использовать необработанный строковый литерал в C ++ VS (проблема кодирования) - PullRequest
1 голос
/ 11 июля 2019

У меня есть английская версия Win10 и английская версия MSVS 2019. Когда я использовал русские версии, конструкции типа cout << R"(Привет, мир!)" << endl; работали нормально (я мог видеть текст на своем родном языке). Как вариант, я смог использовать выражение setlocale(LC_ALL,"Russian");, и оно тоже сработало. В английских версиях ни первое, ни второе выражение не помогают. Я вижу ????????? вместо ожидаемого текста. Трюки типа cout << u8R"(Привет, мир!)" << endl; тоже не помогают. И еще, когда я сохраняю или компилирую проект, VS просит меня сделать выбор в отношении кодировки, что сохранить страницу. Я пытался выбрать несколько случайно (UTF, 1251, 1252 ...), но безуспешно. Как я могу решить проблему? Постскриптум В онлайн-компиляторах (например, https://www.jdoodle.com/online-compiler-c++), проблема не сохраняется!

1 Ответ

0 голосов
/ 11 июля 2019

Я не понял, что проблема не в компиляции строки или ошибке времени выполнения, а просто в локализации консоли.CHCP 65001 в консоли решает проблему.

cout << u8R "(Порядок. Спасибо)"; </p>

...