Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Жорик
1 / 1 / 0
Регистрация: 28.08.2010
Сообщений: 63
#1

Не пишет по-русски - C++

31.08.2010, 14:00. Просмотров 1965. Ответов 9
Метки нет (Все метки)

Ввожу значения переменных на русском языке, а вместо слов непонятные буквы.
Что нужно дописать чтобы понимались русские слова?
(Редактор MSVS 2010)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2010, 14:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не пишет по-русски (C++):

Как это читается по-русски - C++
int MyFunc(...) { cout<<MyFunc; //это //cout<<MyFunc //это return 0; } int main() { MyFunc(100);

Как прописать строки по- русски - C++
Как прописать строки по-русски, чтобы при выводе на экран не было иероглифов?

Как по-русски обозвать целиком эту конструкцию? - C++
Ту что в круглых скобках в операторе for? for (i=0; i<n; ++i) { cout<<i; } В фигурных скобках - тело, вся первая строка - заголовок....

Почему не компилирует слова по русски, а выводит иероглифы какието? что для этого сделать надо? - C++
Почему не компилирует слова по русски, а выводит иероглифы какието? что для этого сделать надо?

Не работает setlocale(LC_ALL,"Russian") или Говорим по русски - C++
оператор setlocale(LC_ALL,"Russian"); при проверке одной консольной программы сpp в 3 оболочках C++Builder, CodeBlocks, MS VisualStudio...

C-Free 5.0 можно заставить "говорить" по русски в консоле? - C++
Короче говоря допустим что есть простенький код: #include <stdio.h> #include <conio.h> int main() { ...

9
MikeSoft
Эксперт С++
3800 / 1776 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
31.08.2010, 14:02 #2
Жорик, тема уже обсуждалась не один раз: Русские шрифты в консоли
0
Жорик
1 / 1 / 0
Регистрация: 28.08.2010
Сообщений: 63
31.08.2010, 14:42  [ТС] #3
Я пробовал вводить setlocale( LC_ALL,"" ); и setlocale( LC_ALL,"Russian" ); ), но по-русски так и не печатает.
А куда их нужно ставить?
Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
 
 int main()
 {
     int number1;
     int number2;
     int number3;
     int product;
 
 
     std::cout << "Enter the first multiplier: ";
     std::cin >> number1;
 
     std::cout << "Enter the second multiplier: "; 
     std::cin >> number2;
 
     std::cout << "Enter the third multiplier: ";
     std::cin >> number3; 
 
     product = number1 * number2 * number3;
 
     std::cout << "Product is " << product << std::endl;
 
     system("pause");
     
     setlocale( LC_ALL,"" );
    
     return 0;
 }
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
31.08.2010, 14:45 #4
Жорик, В начало. Но ввод производится русскими буквами не будет. Если вывод на экран то:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
 
 int main()
 {
         setlocale( LC_ALL,"" );
         int number1;
         int number2;
         int number3;
         int product;
 
 
         std::cout << "Enter the first multiplier: ";
         std::cin >> number1;
 
         std::cout << "Enter the second multiplier: "; 
         std::cin >> number2;
 
         std::cout << "Enter the third multiplier: ";
         std::cin >> number3; 
 
         product = number1 * number2 * number3;
 
         std::cout << "Product is " << product << std::endl;
 
         system("pause");
        
         return 0;
 }
1
Vladimir616
112 / 112 / 3
Регистрация: 05.07.2009
Сообщений: 224
31.08.2010, 17:58 #5
Вот такая конструкция позволяет работать с введённым русским символом (ch). Осталось только загнать её в цикл и прогнать этим циклом все русские переменные.
C++
1
2
3
4
5
6
7
8
    if(ch > 127)
    {
        if(ch < 224)
            ch += 64;
        else
            if(ch != 240)
                ch += 16;
    }
0
Mencey
147 / 94 / 7
Регистрация: 22.07.2010
Сообщений: 424
31.08.2010, 19:50 #6
Цитата Сообщение от Vladimir616 Посмотреть сообщение
Вот такая конструкция позволяет работать с введённым русским символом (ch). Осталось только загнать её в цикл и прогнать этим циклом все русские переменные.
Я это пробывал работает, но через некоторое время опять бубет абракатабра.

Добавлено через 2 минуты
Вот сдесь эта тема тоже обсуждалась.

Добавлено через 9 минут
Вобще эта тема обсуждается примерно раза три в неделю.

Добавлено через 1 минуту
А этот код в VC действительно работает!

C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <locale.h>
 
 
int main()
{
  setlocale(LC_ALL,"Russian"); 
  std::cout << "Русский текст" << endl;
}
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
31.08.2010, 20:05 #7
Mencey, locale.h подключать совершенно необязательно в VS 2005 и старше.
А вообще. Пишите в тестовике, компильте в консоли, запускайте там же, и никаких проблем)

Крайне удивило, что вот это:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#ifndef _LCONV_DEFINED
struct lconv {
        char *decimal_point;
        char *thousands_sep;
        char *grouping;
        char *int_curr_symbol;
        char *currency_symbol;
        char *mon_decimal_point;
        char *mon_thousands_sep;
        char *mon_grouping;
        char *positive_sign;
        char *negative_sign;
        char int_frac_digits;
        char frac_digits;
        char p_cs_precedes;
        char p_sep_by_space;
        char n_cs_precedes;
        char n_sep_by_space;
        char p_sign_posn;
        char n_sign_posn;
        };
#define _LCONV_DEFINED
#endif
Можно использовать:

C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include  <locale.h>
 
int main()
{
   lconv Ob;
   Ob.thousands_sep="fdf";
   std::cout<<Ob.thousands_sep;
}
Разве не должно быть защищено от записи в поля структуры заголовочного файла IDE?
Собственно нашел инфу. Удивление уходит

Добавлено через 14 минут
Хотя нет. Не уходит. Не должна она иметь права изменяться. Она дает инфу о текущей локали.

Таки полезная штука:

C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include  <locale.h>
 
int main()
{
   setlocale(LC_MONETARY, "");
   lconv*Ob;
   Ob=localeconv();
   std::cout<<Ob->currency_symbol<<' '<<Ob->int_curr_symbol<<'\n';
}
0
Nameless One
Эксперт С++
5774 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
01.09.2010, 11:39 #8
Цитата Сообщение от Lavroff Посмотреть сообщение
Хотя нет. Не уходит. Не должна она иметь права изменяться. Она дает инфу о текущей локали
А зачем тогда нужна информация о текущей локали, если ее нельзя изменить?
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
01.09.2010, 17:43 #9
Nameless One, Локаль можно. Но зачем менять информацию о ней?) Ладно. Возможно мой вопрос некорректен.
0
Fantasy
0 / 0 / 0
Регистрация: 01.09.2010
Сообщений: 7
01.09.2010, 18:57 #10
в главную функцию написать
C++
1
2
::SetConsoleOutputCP(1251);
::SetConsoleCP(1251);
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2010, 18:57
Привет! Вот еще темы с ответами:

Wi-Fi модем подключается, пишет что подключено, но стоит значок и пишет "без доступа в - Wi-Fi
Здравствуйте.У меня такая проблема! Wi-Fi модем подключается, пишет что подключено, но всё равно стоит значок в виде жёлтого треугольника с...

ОС пишет пишет 100 Мб логов в час - Windows 7
Понял. Видовс 7 отстой. К тому же она отсылает в майкрософт данные о пользователях. Тема вынесана из...

Wi-Fi модем подключается, пишет что подключено, но всё равно стоит значок в виде жёлтого треугольника с восклицательным знаком и пишет "без доступа в - Wi-Fi
Здравствуйте. Извините, что влезаю в чужую тему, но у меня такая же проблема! Wi-Fi модем подключается, пишет что подключено, но всё равно...

Почему пишет при передачи информации через сокеты пишет "индекс находится вне границ массива" - C#
Во время выполнения кода сервера, при получении данных они оказываются пустыми. Кто сможет объяснить эту непонятную для меня магию. Вот код...


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

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
01.09.2010, 18:57
Ответ Создать тему
Опции темы

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