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

Ввод пустой строки и ее запись в переменную - C++

Восстановить пароль Регистрация
 
Seroga7
 Аватар для Seroga7
6 / 6 / 1
Регистрация: 08.12.2012
Сообщений: 147
16.02.2014, 19:21     Ввод пустой строки и ее запись в переменную #1
Нужно вводить в консоли несколько строк подряд, среди которых может быть пустая. Ввожу первую, нажимаю enter, ввожу следующую и т.д. Это считывается в переменные типа string. Но когда ввожу пустую строку(т.е сразу нажимаю enter), то она не вводится в переменную, а переходит на строку ниже и просит ввести еще раз. Как занести пустую строку в переменную string?

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
#include <iostream>
#include <string>
 
using namespace std;
 
void main(){
 
    int N, i;
    cin >> N;
 
    string s1, s2, s3;
    
    for (i = 0; i < N; ++i){
        cin >> s1;
        cin >> s2;
                cin >> s3;
 
                cout << s1;
        cout << s2;
                cout << s3;
    }
 
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2014, 19:21     Ввод пустой строки и ее запись в переменную
Посмотрите здесь:

C++ Как разрешить ввод пустой сроки в консоли?
Не прекращается ввод при вводе пустой строки C++
Ввод символа в переменную типа INT C++
пустой ввод C++
C++ как сделать переменную пустой (обнулить)?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
16.02.2014, 19:36     Ввод пустой строки и ее запись в переменную #2
Seroga7, используйте getline
C++
1
2
string a;
getline(cin, a);
Seroga7
 Аватар для Seroga7
6 / 6 / 1
Регистрация: 08.12.2012
Сообщений: 147
16.02.2014, 19:49  [ТС]     Ввод пустой строки и ее запись в переменную #3
пробовал, но тогда когда два getline подряд, после нажатия enter второй считывает сразу как пустой а не дает выбора ввести туда что-то, либо оставить пустым

C++
1
2
3
string a1, a2;
getline(cin, a1);
getline(cin, a2);
Добавлено через 6 минут
Если больше чем два раза подряд, то последнее не считывается...
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
16.02.2014, 20:17     Ввод пустой строки и ее запись в переменную #4
Seroga7, вставьте
C++
1
cin.ignore();
между getline
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.02.2014, 20:37     Ввод пустой строки и ее запись в переменную #5
Цитата Сообщение от Seroga7 Посмотреть сообщение
Если больше чем два раза подряд, то последнее не считывается...
Конкретный кусок кода покажите, и ввод покажите. Не должно там быть пропусков (если одни getline() используются).

Добавлено через 1 минуту
Цитата Сообщение от metaluga145 Посмотреть сообщение
вставьте
C++
1
cin.ignore()
;между getline
Смысл, если getline() извлекает '\n' из потока?

Добавлено через 13 минут
Если getline() идёт после cin, то так нужно сделать:
C++
1
(cin >> N).get();
Seroga7
 Аватар для Seroga7
6 / 6 / 1
Регистрация: 08.12.2012
Сообщений: 147
16.02.2014, 20:37  [ТС]     Ввод пустой строки и ее запись в переменную #6
не решает проблему
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.02.2014, 20:39     Ввод пустой строки и ее запись в переменную #7
Цитата Сообщение от Seroga7 Посмотреть сообщение
не решает проблему
Ещё раз:
Цитата Сообщение от alsav22 Посмотреть сообщение
Конкретный кусок кода покажите, и ввод покажите.
Seroga7
 Аватар для Seroga7
6 / 6 / 1
Регистрация: 08.12.2012
Сообщений: 147
16.02.2014, 20:39  [ТС]     Ввод пустой строки и ее запись в переменную #8
Цитата Сообщение от alsav22 Посмотреть сообщение
Конкретный кусок кода покажите, и ввод покажите. Не должно там быть пропусков (если одни getline() используются).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int N, i;
    cin >> N;
 
    string s1, s2;
        
    for (i = 0; i < N; ++i){
        getline(cin, s1);
        getline(cin, s2);
    }
 
    cout << endl;
    for (i = 0; i < N; ++i){
        cout << s1 << endl;
        cout << s2 << endl;
    }
(cin >> N).get(); помогло
можно по подробнее что это означает?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2014, 20:44     Ввод пустой строки и ее запись в переменную
Еще ссылки по теме:

C++ Ввод и запись строки в массив
Ввод данных в переменную C++
C++ Ввод текста в переменную (sfml)

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.02.2014, 20:44     Ввод пустой строки и ее запись в переменную #9
Цитата Сообщение от Seroga7 Посмотреть сообщение
(cin >> N).get(); помогло
можно по подробнее что это означает?
То, что перед getline(), в потоке, не должно быть '\n', который cin >> оставляет.
Yandex
Объявления
16.02.2014, 20:44     Ввод пустой строки и ее запись в переменную
Ответ Создать тему
Опции темы

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