Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
NEWd
56 / 2 / 0
Регистрация: 19.10.2015
Сообщений: 83
1

Повторный ввод строки

21.03.2018, 15:59. Просмотров 750. Ответов 5
Метки c++ (Все метки)

Всем привет! Мне нужно написать программу, которая циклически производит ввод строки. Я пытаюсь вводить через cin.get(). НО после первого ввода моя строка (сhar s[100]) заполняется введенными символами, а второго ввода не происходит, т.к. прога считает, что я уже все ввел и тупо использует данные, введенные в первый раз. Я так понимаю, что надо либо массив чистить (как-то указать на то, что он пуст) или пользоваться другой функцией. Помогите!)
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2018, 15:59
Ответы с готовыми решениями:

Повторный ввод данных
#include <iostream> using namespace std; int main() {...

Повторный ввод чисел
Решил сделать программу, а точнеe игру-угадалку. Cуть в том, что консоль(или...

Добавить повторный ввод
#include <stdio.h> #include <conio.h> #include <math.h> #include<iostream>...

Не получается повторный ввод числа
Дано некое задание на вывод массива чисел. В случае неправильности ввода...

Конструктор. Повторный ввод в строку
При создании второго объекта, не запрашивает повторный ввод в строку типа char....

5
Hitoku
Модератор
1703 / 1302 / 1400
Регистрация: 28.10.2016
Сообщений: 4,240
Завершенные тесты: 4
21.03.2018, 16:01 2
После ввода строки добавьте
C++
1
std::cin.ignore(std::cin.rdbuf()->in_avail());
для очистки буффера ввода
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
21.03.2018, 16:02 3
Цитата Сообщение от NEWd Посмотреть сообщение
циклически производит ввод строки.
Цикл у тебя есть? Код показывай.
0
NEWd
56 / 2 / 0
Регистрация: 19.10.2015
Сообщений: 83
21.03.2018, 16:12  [ТС] 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
29
30
31
32
33
34
do
    {
        m = 0;
        cout << "Enter text\n";
        cin.get(quote, 100, '\n');
        k = strlen(quote);
        if (k < 100)
        {
            for (i = 0; i < k - 1; i++)
            {   
                if (quote[i] == quote[i + 1]) 
                {
                    m++;
                    for (int j = i; j < k - i - 1; j++)
                        quote[j] = quote[j + 1];
 
                    k--;
                }
            }
 
            for (i = 0; i < k; i++)
            {
                cout.put(quote[i]);
            }
        }
        else 
            cout << "вы ввели неправильные данные, введите заново\n";
        cout <<endl  <<m ;
        cout << "\n Press y to repeat";
                cin.ignore(cin.rdbuf() -> in_avail());
        cin.clear();
        cin >> z;
    }                      
    while (z == 'y');
Добавлено через 1 минуту
cin.ignore тут ни при чем по идее, потому что я ввожу еще и z и она норм вводится..
0
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,046
21.03.2018, 17:04 5
Лучший ответ Сообщение было отмечено NEWd как решение

Решение

И что? С cin.ignore() не работает?
Цитата Сообщение от NEWd Посмотреть сообщение
потому что я ввожу еще и z и она норм вводится..
Тут другой оператор работает (>> ), он '\n', оставшийся в потоке после cin.get(), пропускает.
Вот так исправь:
C++
1
(cin >> z).get();
Добавлено через 5 минут
Лучше бы cin.getline() использовал, он '\n' в потоке не оставляет (но перед ним тоже нужно убирать '\n', после cin >>).
1
NEWd
56 / 2 / 0
Регистрация: 19.10.2015
Сообщений: 83
21.03.2018, 17:29  [ТС] 6
Спасибо, все ок!)
0
21.03.2018, 17:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2018, 17:29

Повторный ввод данных после ошибки
как после слов &quot;ошибка!!!...&quot; вернуться для повторного ввода оценки...

Проверка на повторный ввод элемента массива
Вот код во время проверки на повторный ввод элемента массива получается...

Повторный ввод без завершения программы
консольное приложение. как сделать так, чтобы при вводе неверных данных в...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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