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

Окончание ввода - C++

Восстановить пароль Регистрация
 
VipeR_SeD
0 / 0 / 0
Регистрация: 05.05.2013
Сообщений: 9
05.05.2013, 10:20     Окончание ввода #1
Здравствуйте. Возникла проблема как окончить заполнение вектора по нажатию определенной клавиши? (В данном случае "Enter".

C++
1
2
3
4
5
6
do
    {
    cin >> q;
    Mass.push_back(q);
    }
    while(q!='\n');
Собственно что должно быть в while() ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Svyatoslav7
 Аватар для Svyatoslav7
18 / 18 / 8
Регистрация: 19.08.2012
Сообщений: 281
05.05.2013, 11:11     Окончание ввода #2
што б закончить програму на Enter необходимо сначало сканировать нажатие клавиш ..... тогда взять скан код клавиши Enter .... у вашем случае
C++
1
while(k!=13)
k - ето отканованая клавиша наша.... в нашем случае ето Enter

Добавлено через 7 минут
но как сканировать клавишу я не вкурсе( только начал изучать с++
VipeR_SeD
0 / 0 / 0
Регистрация: 05.05.2013
Сообщений: 9
05.05.2013, 12:24  [ТС]     Окончание ввода #3
Видел где-то подобное
Код
while((cin)!='\n')
Но так не подходит.
Как что то подобное сделать?
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 681
05.05.2013, 12:44     Окончание ввода #4
Вы хотите чтоб цикл останавливался когда пользователь нажмет Enter как-то так?
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
05.05.2013, 13:08     Окончание ввода #5
C++
1
2
3
4
do
{
...
} while (cin.get() != '\n');
Это?
VipeR_SeD
0 / 0 / 0
Регистрация: 05.05.2013
Сообщений: 9
05.05.2013, 13:18  [ТС]     Окончание ввода #6
Цитата Сообщение от Somebody Посмотреть сообщение
C++
1
2
3
4
do
{
...
} while (cin.get() != '\n');
Это?
Да,спасибо

Но почему при выполнении:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>;
 
#include <vector>;
 
using namespace std;
 
int main ()
{
    setlocale(LC_ALL,"Rus");
    vector<char>Mass;
    char q;
    int i,o=0;
    cout << "Добро пожаловать в программу!" << endl;
    cout << "Введите символы для заполнения вектора." << endl << "Остановка заполнения происходит при нажатие на 'Enter'." << endl;
    do
    {
    cin >> q;
    Mass.push_back(q);
    }
    while (cin.get() != '\n');
    cout << "Test";
}
Не выдает "тест"? Где то ошибка?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.05.2013, 18:04     Окончание ввода
Еще ссылки по теме:

C++ Окончание файла
Окончание W и A в функциях C++
C++ Окончание ввода в vector<int> по '\n'

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

Или воспользуйтесь поиском по форуму:
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
05.05.2013, 18:04     Окончание ввода #7
Не знаю, всё нормально выдаёт.

Добавлено через 4 часа 37 минут
А, не обратил внимания, что там char'ы вводятся - тогда тут get() съедает символы. Надо или peek() вместо get(), или если нужны все символы вместе с пробельными, то вводить их не >>, а get()'ом, и тогда можно сравнивать q с '\n'.
Yandex
Объявления
05.05.2013, 18:04     Окончание ввода
Ответ Создать тему
Опции темы

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