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

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

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

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

21.02.2009, 16:57. Просмотров 3635. Ответов 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++
Столкнулся вот с такой проблемой при использовании функции gets_s() выводятся кракозябы. Setlocale не помогает. Как исправить ошибку и где...

Считывание строк в файл - C++
Здравствуйте,очень нужна помощь.Есть данный код,не могу понять как его переделать из посимвольного считывания в файл в строковое...

Считывание строк с клавиатуры - C++
Доброго времени. вот небольшой код: (см. ниже). Почему в консоли пишет абрукадабру? Как это исправить? Спасибо

Считывание строк из файла - C++
Во общем есть текстовый файл, из которого надо взять строку и просто ее напечатать #define _CRT_SECURE_NO_WARNINGS #include...

Лишнее считывание строк - C++
Всем доброго вечера! Как всегда, избитая тема про потоки cin/cout. Предположим, в следующем формате пишется часть кода: ...

Считывание строк из файла - C++
Здравствуйте, подскажите, пожалуйста, как организовать чтение строк из файла при помощи ifstream\ofstream таким образом, чтобы считывалось...

считывание строк из файла - C++
Помогите, пожалуйста, нужно на завтра две прграммы написать, но не получается(( 1) считать из файла строки-палиндромы (это строки,...

Считывание строк из файла - C++
При считывании из файла читаются всего 3 строки. void rab::xinputfile() // vvod iz file { ifstream fin; // delete x;...

Считывание и сравнение строк - C++
Добрый день! Помогите, пожалуйста, написать программу, позволяющую считывать данные из файла построчно. Если строка встречается несколько...

Считывание из файла массива строк - C++
Ув. товарищи! Помогите плз. Нужно реализовать функцию, заполняющую из файла массив строк. Что то типа такого: bool...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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++...
Ответ Создать тему
Опции темы

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