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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.90
lex4051
0 / 0 / 0
Регистрация: 21.02.2009
Сообщений: 3
#1

считывание строк и чисел. - C++

21.02.2009, 16:57. Просмотров 3611. Ответов 2
Метки нет (Все метки)

Доброго времени суток. Столкнулся с проблемой считывания чисел и строк.
Используются только <string> и <iostream>.
Необходимо вначале считать строку(имеется ввиду до переноса строки со всеми пробелами), а потом на следующей строке целое число, потом вывести строку и число через пробел.
Повторять эти действия пока строка не равна "exit".

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdlib.h>
#include <iostream>
#include <string>
using namespace std;
 int main(int argc,char **argv) {
    string str;
    int N;
    while (str!="exit"){
        getline(cin, str);
        cin>>N;
        cout<<str<<' '<<N;
    }
    return 0;
}

Это код программы.
Когда вводишь первый раз строку, нажимаешь Enter, вводишь число, снова нажимаешь Enter, то выводится нормально.
Но если ввести второй раз, то после нажатия Enter программа выводит пустую строку, пробел и предыдущее число(которое вводили в первый раз).

После просмотра переменных оказалась, что строка str оказывается пустой.

Пожалуйста подскажите в чём проблема и что делать?
PS ОС Debian компилятор g++.

Добавлено через 30 минут 39 секунд
Нашёл банальное решение проблемы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdlib.h>
#include <iostream>
#include <string>
using namespace std;
 int main(int argc,char **argv) {
    string str = "";
    int N;
    bool f = false;
    while (str!="exit"){
    if (f) {getline(cin, str);} else {f = true;}
        getline(cin, str);
    cin>>N;
    cout<<str<<' '<<N<<endl;
    }
    return 0;
}
Вопрос. Можно ли по-нормальному сделать? Чтобы после считывания числа учитывался перенос строки?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2009, 16:57     считывание строк и чисел.
Посмотрите здесь:

считывание строк из файла C++
Считывание строк в файл C++
C++ Считывание строк из файла
считывание строк из потока файлов C++
Считывание строк из файла C++
Считывание из файла в массив строк C++
Лишнее считывание строк C++
C++ Считывание строк из файла
Считывание и сравнение строк C++
Считывание из файла массива строк C++
C++ Считывание строк с клавиатуры
C++ Считывание строк из текстового файла

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sazary
10 / 10 / 2
Регистрация: 02.02.2009
Сообщений: 15
21.02.2009, 17:07     считывание строк и чисел. #2
Могу вот так еще предложить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdlib.h>
#include <iostream>
#include <string>
using namespace std;
 int main(int argc,char **argv) {
    string str;
    char num[200];
    int N;
    while (str!="exit"){
        getline(cin, str);
        cin.getline(num, 200, '\n');
        N= atoi(num);
        cout<<"-->"<<str<<' '<<N<<endl;
    }
 
    return 0;
}
lex4051
0 / 0 / 0
Регистрация: 21.02.2009
Сообщений: 3
21.02.2009, 17:59  [ТС]     считывание строк и чисел. #3
Большое спасибо.
Но вопрос другой:
"Как можно считывать число с переносом строки?"
PS кто знает Pascal ReadLn(N) в C++...
Yandex
Объявления
21.02.2009, 17:59     считывание строк и чисел.
Ответ Создать тему
Опции темы

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