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

Русский язык в консоли, класс, вектор с типом класса - C++

Восстановить пароль Регистрация
 
Nullik
 Аватар для Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 297
Завершенные тесты: 1
09.09.2013, 21:16     Русский язык в консоли, класс, вектор с типом класса #1
Добрый вечер.

Написала класс.
Сделала вектор с типом класса.
Вектор хранит объекты класса.

Добавляю в вектор элементы. Смотрю что в векторе храниться - всё правильно.
Только запускаю функцию вывода на экран (функция от класса) - начинается бурда какая-то. Точнее, буквы или кодировку попутали, или ещё чего.

Как быть?

код:

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
#include "stdafx.h"
#include <Windows.h>
#include <fstream>
#include <iostream>
#include <vector>
#include <string>
 
using namespace std;
 
class B {
string nnnn, aaaa;
int pppp, bbbb;
public:
B ();
void print_scr ();
};
 
//конструктор класса, инициализатор (функция чтения)
B::B ()
{
    cout << "\n1: ";
    cin >> nnnn;
    cout << "\n2: ";
    cin >> aaaa;
    cout << "\n3: ";
    cin >> pppp;
    cout << "\n4: ";
    cin >> bbbb;
}
 
//вывод на экран
void B::print_scr ()
{
    cout << "\n1: " << nnnn;
    cout << "\n2: " << aaaa;
    cout << "\n3: " << pppp;
    cout << "\n4: " << bbbb; 
}
 
 
void main()
{
setlocale(0,"");
int i;
vector <BOOK2>  diskk_new; //new -  для записи новых объектов 
 
 
//создадим новую запись. Она не сохраняется сразу в файлы!
B *CreateNewBook = new B; 
diskk_new.push_back(*CreateNewBook); //добавили в конец вектора класса В
 
diskk_new[0].print_scr();
cout << "\n\n";
                
system("pause");
    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2013, 21:16     Русский язык в консоли, класс, вектор с типом класса
Посмотрите здесь:

Русский язык в консоли C++
C++ Русский язык в консоли
Русский язык в консоли C++
C++ Русский язык в консоли Qt 5.3
C++ Русский язык в консоли
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
09.09.2013, 21:23     Русский язык в консоли, класс, вектор с типом класса #2
А вот так попробуй
C++
1
2
SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
у меня все идет
Nullik
 Аватар для Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 297
Завершенные тесты: 1
09.09.2013, 22:52  [ТС]     Русский язык в консоли, класс, вектор с типом класса #3
coloc,
у меня ещё пробелма случилась.

Ввод осуществляется до первого пробела, а если использовать:

C++
1
2
3
4
5
6
7
8
9
10
11
B::B ()
{
    cout << "\n1 ";
    getline (cin, nnnn);
    cout << "\n2";
    getline (cin, aaaa);
    cout << "\n3 ";
    cin >> pppp;
    cout << "\n4 ";
    cin >> bbbb;
}
то строчку 1 игнорит, проскакивает, начинает со второй, но там зато вводит хорошо.

Что делать и как быть?

Добавлено через 1 минуту
нет, то, что вы предложили не подошло. Хм-хм, забавно. Может в проекте чего изменить? так то я меняла с 1251 на 866, русским отображало, но с вектора приходит "сбитый хлам"))

Добавлено через 3 минуты
А, нет, в вектор уже уходит мусор. т.е., у меня занесение "переменных" в конструкторе, поди не правильно делаю, или так можно делать? *проблема в конструкторе*

Добавлено через 48 минут
Может быть кто-нибудь подскажет как быть?

Добавлено через 29 минут
помогите, пожалуйста, решить проблему с getline
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.09.2013, 01:53     Русский язык в консоли, класс, вектор с типом класса #4
Цитата Сообщение от Nullik Посмотреть сообщение
нет, то, что вы предложили не подошло
Чтобы это работало, нужно, в свойствах консоли, выбрать шрифт: Lucida Conslole.

Добавлено через 2 минуты
Цитата Сообщение от Nullik Посмотреть сообщение
помогите, пожалуйста, решить проблему с getline
Перед вызовом getline, в коде, где-то есть ввод через cin >>. Сделайте его таким (пример):
C++
1
2
int i;
(cin >> i).get();
Лучше так делать везде, где используется cin >>.
Nullik
 Аватар для Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 297
Завершенные тесты: 1
11.09.2013, 20:32  [ТС]     Русский язык в консоли, класс, вектор с типом класса #5
alsav22, дааааа, помогло!

Вопрос тогда такой:

C++
1
(cin >> i).get();
полчему так случилось, что просто cin >> i не сработал корректно, особенно когда после него появился getline? Всегда ли вообще нужно прописывать через get? Что даёт\делает этот get?

Добавлено через 1 минуту
С русским языком тоже всё решилось! Спасибо!!!))))
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.09.2013, 01:44     Русский язык в консоли, класс, вектор с типом класса #6
Цитата Сообщение от Nullik Посмотреть сообщение
Что даёт\делает этот get?
Убирает из потока чтения '\n' (попадает туда при нажатии Enter). Если этого не сделать, тогда, для getline(), это будет первый символ в строке. Она обработает его как пустую строку, и код, не останавливаясь, пойдёт дальше.

Добавлено через 1 минуту
Цитата Сообщение от Nullik Посмотреть сообщение
Всегда ли вообще нужно прописывать через get?
Можно и всегда, это не помешает.
Nullik
 Аватар для Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 297
Завершенные тесты: 1
12.09.2013, 08:34  [ТС]     Русский язык в консоли, класс, вектор с типом класса #7
а с cout << "\n" как бороться? Или это только для "cin >>"
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.09.2013, 08:37     Русский язык в консоли, класс, вектор с типом класса #8
Цитата Сообщение от Nullik Посмотреть сообщение
а с cout << "\n" как бороться?
Зачем бороться? Какие-то проблемы с cout << ?
Цитата Сообщение от Nullik Посмотреть сообщение
Или это только для "cin >>"
Да.
Nullik
 Аватар для Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 297
Завершенные тесты: 1
12.09.2013, 08:38  [ТС]     Русский язык в консоли, класс, вектор с типом класса #9
alsav22, ага, проблемы. Можно в ЛС?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2013, 08:44     Русский язык в консоли, класс, вектор с типом класса
Еще ссылки по теме:

Русский язык в консоли C++
Русский язык в консоли C++
Русский язык в консоли C++

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

Или воспользуйтесь поиском по форуму:
alsav22
12.09.2013, 08:44     Русский язык в консоли, класс, вектор с типом класса
  #10

Не по теме:

Цитата Сообщение от Nullik Посмотреть сообщение
Можно в ЛС?
Можно, но лучше здесь. Советчиков больше...

Yandex
Объявления
12.09.2013, 08:44     Русский язык в консоли, класс, вектор с типом класса
Ответ Создать тему
Опции темы

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