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

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

Войти
Регистрация
Восстановить пароль
 
Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 300
Завершенные тесты: 1
#1

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

09.09.2013, 21:16. Просмотров 539. Ответов 9
Метки нет (Все метки)

Добрый вечер.

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

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

Как быть?

код:

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");
    
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2013, 21:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Русский язык в консоли, класс, вектор с типом класса (C++):

Русский язык в консоли - C++
Как сделать запись в файл и чтение с него русскими буквами а не иероглифами?

Русский язык в консоли - C++
для работы с русским языком использую: #include &lt;locale&gt; setlocale(LC_CTYPE, &quot;Russian&quot;); но в програме мне нужно вводить через...

Русский язык в консоли - C++
Здравствуйте. Чего-то не разберусь с русским языком. setlocale(LC_ALL,&quot;RUSSIAN&quot;); и setlocale(LC_ALL,&quot;1251&quot;); - классно. Мне...

Русский язык в консоли - C++
Допустим вот код cout &lt;&lt; &quot;Помогите пожалуйста!&quot;; Пробовал и setlocale и &lt;windows.h&gt;. Проблема в том что вместо русских букв он...

Русский язык в консоли Qt 5.3 - C++
помогите пожалуйста

Русский язык в консоли - C++
Здраствуйте, у меня такой вот вопрос: Почему когда я пишу текст на русском языке в программе C++ Builder 2009, то в моей программе вместо...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
coloc
погромист
410 / 246 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
09.09.2013, 21:23 #2
А вот так попробуй
C++
1
2
SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
у меня все идет
0
Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 300
Завершенные тесты: 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
0
alsav22
5420 / 4816 / 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 >>.
1
Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 300
Завершенные тесты: 1
11.09.2013, 20:32  [ТС] #5
alsav22, дааааа, помогло!

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

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

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

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

Не по теме:

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2013, 08:44
Привет! Вот еще темы с ответами:

Русский язык в консоли - C++
Здравствуйте! Перепробовал все способы в соответствующей теме - ничего не работает. Пишу в QtCreator(без использования Qt как...

Русский язык в консоли - C++
При вводе русских букв в консоль (cin &gt;&gt; a), функция просто не работает, завершается return, я попробовал использовать SetConsoleCP(1251);...

Русский язык в консоли - C++
Здравствуйте.У меня следующая проблема:Когда я записываю русский текст в текстовый файл в файле появляется абра-кадабра какая-то.Как...

Русский язык в консоли - C++
Скажу сразу, что закрепленную тему я прочитал, но не очень понял, как это реализовать. Вот код, текст выводится неизвестными символами....


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

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

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