Как сделать так, чтобы пользователь вводил несколько строк - PullRequest
1 голос
/ 11 февраля 2020

Я бы хотел, чтобы пользователь мог вводить несколько строк строк. Я пытался использовать для l oop, но пока возвращается только последняя строка.

Например, пользователь вводит следующую строку и строки. string str; getline(cin, str);

или петля for(i=0;i<n;i++){ getline(cin, str);}

Это вводимые пользователем данные

Баскетбол Бейсбол Футбол // линия 1

Хоккейный футбол "// линия 2

Теперь я хочу иметь возможность вернуть эти две линии в одной точке. Я не знаю Как это сделать. Кроме того, мне труднее выяснить, нужно ли пользователю вводить только одну строку, две или три. Я понимаю, как поставить точку на cases, но сейчас я хочу это сделать, если есть простой способ, который не выглядит таким грязным,

1 Ответ

1 голос
/ 11 февраля 2020

Почему бы вам не использовать std::getline через некоторое время l oop, чтобы после ввода пустой строки l oop выходил, например так:

#include <iostream>
#include <string>
#include <vector>

int main() {
    std::string line;
    std::vector<std::string> lines;

    while (getline(std::cin, line) && !line.empty()) {
        lines.push_back(line);
    }

    std::cout << "User has entered " << lines.size() << " lines" << std::endl;
    for (auto const& l : lines) {
        std::cout << l << std::endl;
    }

    std::cout << "... End of program ..." << std::endl;
    return 0;
}

Вы можете сохранить каждый пользователь строки вошел в контейнер std::vector и позже извлечет эти строки.

Возможный вывод:

First line
Second line

User has entered 2 lines
First line
Second line
... End of program ...

ОБНОВЛЕНИЕ

Если вы хотите разрешить пользователю вводить только 2 строки и если вы хотите использовать для l oop, то вы можете сделать что-то вроде этого:

#include <iostream>
#include <string>
#include <vector>

int main() {
    std::string line;
    std::vector<std::string> lines;

    for (int i = 0; i < 2; i++) {
        std::getline(std::cin, line);
        lines.push_back(line);
    }

    std::cout << "User has entered " << lines.size() << " lines" << std::endl;
    for (auto const& l : lines) {
        std::cout << l << std::endl;
    }

    std::cout << "... End of program ..." << std::endl;
    return 0;
}

И вывод может быть :

First line                                                                                                                                                                         
Second line                                                                                                                                                                        
User has entered 2 lines                                                                                                                                                           
First line                                                                                                                                                                         
Second line                                                                                                                                                                        
... End of program ...
...