Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 07.03.2019
Сообщений: 26
1

Кодировка в консоли VS

23.03.2019, 22:39. Просмотров 2020. Ответов 8
Метки нет (Все метки)


Есть код.
В нем конструкция проверяющая введенные данные. (Типа примитивной авторизации)
Проблема в том, что в любом другом компиляторе (Dev C++ например) все работает нормально.

Но если скомпилировать программу в VS, при вводе данных напишет, что они неверны. Хотя они верны и принимаются программой, если ее откомпилировать в другом компиляторе.

Кодировка UTF-8, менять на ANSI пытался, не помогло.

Добавлено через 26 минут
Например. Код
C++
1
2
3
4
5
setlocale(LC_ALL, "Russian");
string str1;
cout << "Введите: ";
cin >> str1;
cout << "Вы ввели: " << str1;
Если ввести "Привет"
вывод будет ?аЁў?в
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2019, 22:39
Ответы с готовыми решениями:

Кодировка в консоли
Добрый день , имея некоторый опыт программирования на c# решил так же изучить С++, однако при...

Кодировка консоли
Добрый день. Не удается мне понять, что не так. Как только я не игрался с setLocale и...

Кодировка в консоли VS
Здравствуйте! Проблема вот в чём: Необходимо, чтобы текст отображался точно также, как в...

Кодировка в консоли(C)
Здравия Я к вам с очередной проблемой:)Читал сейчас тему русские шрифты в консоли и задался...

8
Продавец времени
4909 / 2684 / 618
Регистрация: 12.03.2015
Сообщений: 13,016
23.03.2019, 22:39 2
Убери setlocale().
Попробуй так:
C++
1
2
3
4
5
system("chcp 65001 & cls");
string str1;
cout << "Введите: ";
cin >> str1;
cout << "Вы ввели: " << str1;
0
1 / 1 / 0
Регистрация: 07.03.2019
Сообщений: 26
23.03.2019, 22:48  [ТС] 3
Например. Код
C++
1
2
3
4
5
setlocale(LC_ALL, "Russian");
string str1;
cout << "Введите: ";
cin >> str1;
cout << "Вы ввели: " << str1;
Если ввести "Привет"
вывод будет ?аЁў?в



Это пример, суть немного другая, но думаю проблема ясна. Код вообще не имеет значения.

Добавлено через 8 минут
Короче. Это из за setlocale
Особо никто с этим не сталкивался, но один нашелся. Там сказали использовать

C++
1
2
SetConsoleCP (1251);
SetConsoleOutputCP (1251);
Хоть и работает, но желательно найти бы более оптимальный вариант.
0
Параллельный Кот
1900 / 823 / 349
Регистрация: 25.03.2016
Сообщений: 2,040
23.03.2019, 23:14 4
Цитата Сообщение от Deni Bravo Посмотреть сообщение
Хоть и работает, но желательно найти бы более оптимальный вариант
И что по-вашему означает "более оптимальный"? Не пойму, зачем вы задаёте здесь вопросы, если вообще не читаете то, что вам отвечают.
0
Продавец времени
4909 / 2684 / 618
Регистрация: 12.03.2015
Сообщений: 13,016
23.03.2019, 23:19 5
Цитата Сообщение от Deni Bravo Посмотреть сообщение
Хоть и работает, но желательно найти бы более оптимальный вариант.
А без string никак?
К сожалению, у меня нету MSVC, я не могу написать тестовую программу и проверить.
0
1 / 1 / 0
Регистрация: 07.03.2019
Сообщений: 26
24.03.2019, 22:01  [ТС] 6
Оптимальный - не требующий каких либо извращений с кодом. Ибо это проблема именно настроек компилятора.
Тот ответ, что выше - я рассмотрел. Но выбрал альтернативу, что лучше мне подходит .
0
Параллельный Кот
1900 / 823 / 349
Регистрация: 25.03.2016
Сообщений: 2,040
24.03.2019, 22:44 7
Цитата Сообщение от Deni Bravo Посмотреть сообщение
Ибо это проблема именно настроек компилятора
Вы так считаете? Когда практически повсеместно используется Юникод, консоль Windows предлагает нам по умолчанию доисторическую cp866, и это проблема компилятора?

Цитата Сообщение от Deni Bravo Посмотреть сообщение
Оптимальный - не требующий каких либо извращений с кодом
Так, дайте подумать... Может быть -finput-charset=CP1251 -fexec-charset=CP866? Прямиком в каменный век, обходя стороной прогресс.
Кодировка в консоли VS
0
1 / 1 / 0
Регистрация: 07.03.2019
Сообщений: 26
25.03.2019, 15:02  [ТС] 8
Проблема компилятора, т.к. я использовал до него 3 других компилятора. Таких проблем не было. Совсем.
Возможно, там это автоматически настраивалось.

Стоило перейти на VS...
0
Параллельный Кот
1900 / 823 / 349
Регистрация: 25.03.2016
Сообщений: 2,040
25.03.2019, 16:04 9
Лучший ответ Сообщение было отмечено Deni Bravo как решение

Решение

Цитата Сообщение от Deni Bravo Посмотреть сообщение
использовал до него 3 других компилятора. Таких проблем не было
Можете назвать их? VS точно так же по умолчанию выдает текст в кодировке, отличной от CP866. Возможно, те ваши 3 компилятора сразу выполняли преобразование в эту кодировку. Если это именно то поведение, что вам требуется, добавьте параметры компилятора (выше написал их) и никаких действий в коде не потребуется. Но стоит ожидать, что это выльется в другие проблемы, с кодировкой файлов например.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2019, 16:04

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Неправильная кодировка в консоли
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; const int strsize = 20; int main()...

Кодировка символов в консоли
Напомните ещё один способ установки кодовой страницы в консоли для визуал студии, по крайней мере...

Кодировка в консоли (на ЕГЭ)
В этом году буду писать экзамен, но дело в том, что в visual studio setlocale(LC_ALL,&quot;Rus&quot;); не...

Кодировка ввода вывода консоли под кириллицу и латиницу
Возникла необходимость одновременной работы кириллицы и латиницы в консоле.(ввод-обработка-вывод)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.