Программирование на C, C# и Java
Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
ОСТОРОЖНО МОШЕННИКИ! В последнее время в соиальных сетях учстились случаи педложения помощи в написании прогамм от лиц, прикрвающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в псторонних группах ВК. Для связи с нами используйте исключительно эти контакт: vscoderu@yandex.ru, https://vk.com/vscode
Как включить русский язык в Си
На начальных этапах программирования многие новички сталкиваются с такой проблемой: они в коде пишут какое-либо сообщение на русском языке для консоли (например, используя printf), но при запуске программы вместо русских слов появляются какие-то непонятные знаки. Покажем, как избавиться от этой проблемы.
Например, при запуске вот этой программы:
#include «stdafx.h»
int _tmain ( int argc , _TCHAR* argv [ ] )
printf ( «Всем привет! Как дела?» ) ;
В консоли будет отображено следующее:
Всё дело в том, что мы не подключили русскую локализацию.
Исправить эту ошибку очень легко!
Для начала надо добавить следующую библиотеку:
Она отвечает за локализацию.
А затем нам надо просто написать в начале тела кода вот эту строку:
setlocale ( LC_ALL , «Rus» ) ;
Функция setlocale задаёт локализацию программы. По умолчанию это только английский язык.
LC_ALL указывает программе, что локализированы будут все функции.
«Rus», как легко догадаться говорит о том, что локализация произойдёт на русский язык.
Вот и всё! Мы включили русский язык в Си. Наша программа модернизирована и обогащена на две строки. Теперь она будет выглядеть вот так:
Как настроить вывод русского языка в консоли Visual studio?
Как в настройках проекта установить кодировку, что-бы в консоле проект С++ выдавл русские буквы, а не крякозябры. Вариант setlocale — не устраивает, нужно именно в настрйоках. Visual Studio 2010 express
Отслеживать
51.2k 86 86 золотых знаков 266 266 серебряных знаков 505 505 бронзовых знаков
задан 27 апр 2014 в 15:15
180 2 2 золотых знака 3 3 серебряных знака 13 13 бронзовых знаков
ответ простой — установите линукс. Там в консоли кириллица работает отлично. Даже особо настраивать не нужно. Правда студия там не заработает.
27 апр 2014 в 19:23
Так тут дело не в студии, не в С++, а в виндах.
28 апр 2014 в 9:09
если по существу, то нужно поправить настройки консоли. И все. Правда многие программы после этого в консоли будут писать «крякозяблами». Но можно попробовать пофиксить аккуратно.
28 апр 2014 в 9:28
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Открываешь исходник, далее:
File->Advanced Save Options->Encoding->Cyrillic (DOS)-codepage 866
Если, все-таки, не очень принципиальны настройки, то почитай Русский текст в программах
Отслеживать
ответ дан 28 апр 2014 в 12:17
601 5 5 серебряных знаков 6 6 бронзовых знаков
- c++
- кодировка
- visual-studio
- консоль
-
Важное на Мете
Связанные
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как вывести русские буквы в консольном приложении? [дубликат]
Обратите внимание на комментарий от @Angry Bird выше. В том вопросе на хэшкод все уже обсуждалось. Куча ответов. Пробуйте, но учтите простого решения дури в русской Винде с двумя кодировками нет.
12 окт 2011 в 19:50
Самый лучший способ поставить linux и забыть обо всем этом как о страшном сне 😉
12 окт 2011 в 20:46
В Винде тоже люди.
13 окт 2011 в 13:26
5 ответов 5
Сортировка: Сброс на вариант по умолчанию
Строку system(«chcp 866»); можно писать, если русского языка нет в командной строке. В подобных целях надо писать:
include . setlocale(0,"RUS");
Отслеживать
8,657 18 18 золотых знаков 73 73 серебряных знака 181 181 бронзовый знак
ответ дан 12 окт 2011 в 15:53
892 6 6 серебряных знаков 13 13 бронзовых знаков
Спасибо. include
12 окт 2011 в 20:35
@elena, не забудьте принять ответ.
20 окт 2011 в 17:16
Это для Builder, но думаю должно работать.
Объявляете функцию:
void rcout(char *string)
вызываете так:
rcout("Тут ваш текст");
Отслеживать
ответ дан 12 окт 2011 в 19:06
170 10 10 бронзовых знаков
если работать в DevC++, то прямо в Мэйне, в самом начале до объявления вставляете
> setlocale( LC_ALL,"Russian" ); > setlocale( LC_ALL," ");
Отслеживать
ответ дан 14 окт 2011 в 20:26
202 1 1 золотой знак 4 4 серебряных знака 13 13 бронзовых знаков
Во первых при выводе, переведите строку в массив чаров:
cout
Ну и если это не поможет, попробуйте воспользоваться:
setlocale( LC_ALL,"Russian");
И еще, как написал @KoVadim гугл имеет для Вас много ответов
Отслеживать
ответ дан 12 окт 2011 в 14:31
Sergii Kozlov Sergii Kozlov
2,468 16 16 серебряных знаков 13 13 бронзовых знаков
cout
12 окт 2011 в 15:55
#include using namespace std; int main()< setlocale(LC_CTYPE, "rus"); //"Rissian" cout
Отслеживать
ответ дан 4 апр 2015 в 11:44
11 3 3 бронзовых знака
-
Важное на Мете
Связанные
Похожие
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Русские символы при вводе и выводе на C++ [дубликат]
Начал изучать C++ и столкнулся с проблемой вывода русских букв в консоль. У нас на форуме узнал, что чтобы C++ правильно отображались русские буквы, надо применять setlocale(LC_ALL, "Russian") и применял её, всё было нормально, пока в книге не прочитал про ввод строк и строки и запустил пример из книги. В программе, код которой идёт ниже, если оставить setlocale , то программа выводит русские буквы нормально, а вот если запросить строку и ввести русские буквы, а потом вывести их, то они портятся при последующем выводе. Если убрать setlocale , то русские буквы при вводе, а потом выводе не портятся, зато вывод их из программы портится.
// insrtl.cpp -- чтение более одной строки #include int main()< using namespace std; setlocale(LC_ALL,"Russian"); const int ArSize = 20; char name[ArSize]; char dessert[ArSize]; cout > name; cout > dessert; cout
Вопрос: как мне поступить, чтобы можно было и из программы русские буквы выводить и при запросе ввода и последующем выводе они не портились? UPD: попробовал так:
// insrtl.cpp -- чтение более одной строки #include #include char *Rus(char *str) < static char s[1024]; CharToOem(str, s); return s; >int main()< using namespace std; const int ArSize = 20; char name[ArSize]; char dessert[ArSize]; cout > name; cout > dessert; cout
Но вообще получается что-то странное похоже что в переменные записываются выводимые строки : в desert записывается "У меня есть вкусный " а в name записывается " для вас, " . И что делать я хочу русский язык а не
C:\Users\Rules>"D:\ProjectsC++\C++ Learning\Chapter 4\insrt1\insrt1.exe" Введите свое имя: Иван Введите свой любимый десерт: Какао У меня есть вкусный ? Є R для вас, ?ў -. Для продолжения нажмите любую клавишу . . .
после моего кода и не то что стало после UPD а именно:
C:\Users\Rules>"D:\ProjectsC++\C++ Learning\Chapter 4\insrt1\insrt1.exe" Введите свое имя: Иван Введите свой любимый десерт: Какао У меня есть вкусный У меня есть вкусный для вас, для вас, . Для продолжения нажмите любую клавишу . . .
UPD: Нашёл самый лучший идеальный вариант здесь и всем настоятельно рекомендую использовать ТОЛЬКО ЭТОТ ВАРИАНТ он самый лучший!
