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

Работа с классами. Не работает Кириллица. Истина рядом - C++

Восстановить пароль Регистрация
 
Igorokmen
2 / 2 / 1
Регистрация: 31.01.2013
Сообщений: 96
19.05.2013, 13:04     Работа с классами. Не работает Кириллица. Истина рядом #1
Работаю в Microsoft Visual Studio 2010.

Кириллица везде работает, кроме одного момента. Подозреваю на то, что классы не умеют работать с кириллицей. как быть?
Не отображает m_data; а выводит крякозябры.
P.S. Даже не знаю.. для новичков ли вопрос..

класс main.h :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Person
{
public:
    Person(int ID, char* data, bool Pol, double age);
    Person(): m_Id(0), m_Pol(false), m_Age(0.0) { m_data[0]='\0';}
    void Print();
    void input();
 
private:
    char    m_data[50];
    int     m_Id;
    bool    m_Pol;
    double  m_Age;
};
main.cpp :
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// LAB1.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include "main.h"
#include <string.h>
#include <stdlib.h>
using namespace std;
 
Person::Person(int ID, char* data, bool Pol, double age)
       :m_Id(ID), m_Pol(Pol), m_Age(age)
 
{
    strcpy(m_data, data);
}
 
void Person::Print()
{
    cout << "Порядковый номер: " << m_Id <<" " << "ФИО: "  << m_data <<" " << "Возраст: " << m_Age  <<" " << "Пол: ";   
    if(m_Pol==0) cout << "man" <<endl;
    else cout << "woman" << endl;
}
 
 
void::Person::input()
{
    cout << "Введите порядковый номер ID ";
    cin >> m_Id;
 
    cout << "Введите ФИО ";
    cin >> m_data;                   // Вот тут проблема!!!!!
    
    cout << "Введите возраст ";
    cin >> m_Age;   
 
    cout << "Введите пол ";
    cin >> m_Pol;
}
 
int main()
{
    
    setlocale( LC_ALL,"Russian" );
    Person nt;
    nt.input();
    nt.Print();
    system("pause");
    return 0;
}
В чем может быть проблема?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2013, 13:04     Работа с классами. Не работает Кириллица. Истина рядом
Посмотрите здесь:

C++ Работа с классами
Работа С Классами C++
Работа с классами C++
C++ Работает ли Кириллица с классами?
Работа с классами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
19.05.2013, 13:28     Работа с классами. Не работает Кириллица. Истина рядом #2
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <clocale>
using namespace std;
 
class Person
{
public:
    Person(int ID, char* data, bool Pol, double age);
    Person(): m_Id(0), m_Pol(false), m_Age(0.0) { m_data[0]='\0';}
    void Print();
    void input();
 
private:
    char    m_data[50];
    int     m_Id;
    bool    m_Pol;
    double  m_Age;
};
 
Person::Person(int ID, char* data, bool Pol, double age)
       :m_Id(ID), m_Pol(Pol), m_Age(age)
 
{
    strcpy(m_data, data);
}
 
void Person::Print()
{
    setlocale (LC_ALL,"Russian");
    cout << "Порядковый номер: " << m_Id <<" " << "ФИО: "  << m_data <<" " << "Возраст: " << m_Age  <<" " << "Пол: ";   
    if(m_Pol==0) cout << "man" <<endl;
    else cout << "woman" << endl;
}
 
 
void::Person::input()
{
    setlocale (LC_ALL,"Russian");
 
    cout << "Введите порядковый номер ID ";
    cin >> m_Id;
 
    cout << "Введите ФИО ";
    cin >> m_data;                   // Вот тут проблема!!!!!
    
    cout << "Введите возраст ";
    cin >> m_Age;   
 
    cout << "Введите пол ";
    cin >> m_Pol;
}
 
int main()
{
    
    setlocale( LC_ALL,"Russian" );
    Person nt;
    nt.input();
    nt.Print();
    system("pause");
    return 0;
}
Igorokmen
2 / 2 / 1
Регистрация: 31.01.2013
Сообщений: 96
19.05.2013, 13:30  [ТС]     Работа с классами. Не работает Кириллица. Истина рядом #3
Что вы хотели сказать этим сообщением? ничего не изменилось.
Или вы продемонстрировали как это записать одним текстом?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,829
Записей в блоге: 2
Завершенные тесты: 1
19.05.2013, 13:33     Работа с классами. Не работает Кириллица. Истина рядом #4
Цитата Сообщение от Igorokmen Посмотреть сообщение
Подозреваю на то, что классы не умеют работать с кириллицей.
Вы правы. Классы вообще ни с чем не могут работать

Русские шрифты в консоли
Igorokmen
2 / 2 / 1
Регистрация: 31.01.2013
Сообщений: 96
19.05.2013, 13:37  [ТС]     Работа с классами. Не работает Кириллица. Истина рядом #5
Спасибо, мудрец.
Знать бы есть ли приемы, обойти этот нюанс.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,829
Записей в блоге: 2
Завершенные тесты: 1
19.05.2013, 13:38     Работа с классами. Не работает Кириллица. Истина рядом #6
C++
1
2
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
шрифт Lucida Console
Igorokmen
2 / 2 / 1
Регистрация: 31.01.2013
Сообщений: 96
19.05.2013, 13:40  [ТС]     Работа с классами. Не работает Кириллица. Истина рядом #7
Это я должен вставить в тело программы или куда?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2013, 13:45     Работа с классами. Не работает Кириллица. Истина рядом
Еще ссылки по теме:

Не работает прорамма с классами C++
C++ Работа с классами
Подсчитать количество вхождений буквы (кириллица) в строку (кириллица) C++

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,829
Записей в блоге: 2
Завершенные тесты: 1
19.05.2013, 13:45     Работа с классами. Не работает Кириллица. Истина рядом #8
Цитата Сообщение от Igorokmen Посмотреть сообщение
Это я должен вставить в тело программы или куда?
Это в main - в начало функции.
C++
1
2
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Шрифт выставляется в свойствах консоли.
И вот еще:
ЛОКАЛИЗАЦИЯ КОНСОЛЬНЫХ ПРИЛОЖЕНИЙ В ЯЗЫКЕ C++
Yandex
Объявления
19.05.2013, 13:45     Работа с классами. Не работает Кириллица. Истина рядом
Ответ Создать тему
Опции темы

Текущее время: 06:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru