Как сделать так, чтобы пользователь вводил несколько строк

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

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

или цикл for(i=0;i<n;i++){ getline(cin, str);}

Это ввод, который вводит пользователь

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

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

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

Всего 1 ответ


Почему бы вам не использовать std::getline в цикле while, чтобы после ввода пустой строки цикл завершился следующим образом:

#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 строки и если вы хотите использовать цикл, то вы можете сделать что-то вроде этого:

#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 ...

Есть идеи?

10000