Top.Mail.Ru
Ответы

Русские символы в С++

Имеется консольное приложение. Создан класс, в котором часть свойств - строки, часть - числа. Приложение должно сначала запросить у пользователя данные, потом вывести. Если setlocale используется, то в консоль фразы "Введите фамилию", "Введенная фамилия: " и т. п. выводятся нормально, русскими символами, но при этом само значение фамилии - кракозябрами. И получается что то типа:

Ввод:
Введите фамилию: Иванов

Вывод:
Фамилия: /кракозябры/

Если setlocale НЕ использовать, то получается наоборот:

Ввод:
/кракозябры/: Иванов

Вывод:
/кракозябры/: Иванов

Как решить такую проблему?

По дате
По рейтингу
Аватар пользователя
Новичок
12лет
Аватар пользователя
Ученик
12лет

Андрюха, ДОС консоли по умолчанию не читают АСКИ кодировку. В том редакторе, где пишешь исходник сохраняй его в кодировке 866 ОЕМ. Стандартный блокнот, увы, не работает с ней. Возьми хороший аналог -ЭйкелПад (извини, латиница не поддерживается) . Он и на русском, и заточен как раз для программистов!

Аватар пользователя
Оракул
12лет

Значит, setlocale неправильно используется...

Аватар пользователя
Просветленный
12лет

Используй второй вариант, но текст исходника программы редактируй в стороннем редакторе.