чтение нескольких строк текста до пустой строки - PullRequest
1 голос
/ 26 марта 2019

Я работаю над программой, которая заставляет пользователя вводить текст, пока программа не прочитает пустую строку. Пока у меня есть это:

#include <iostream>
#include <cstring>

int main() {
    string text; 
    cout << "Enter Your Text: " << endl; 
    getline(cin,text);
    cout << "Text" << endl;
    return 0;
}

Но это выводит мой текст только в виде строки, а не отдельных строк, как мне бы хотелось. И затем есть часть, когда он читает пустую строку, которая обозначает конец ввода пользователя.

Я прочитал, что getline() получает весь пользовательский ввод, но как мне отобразить его в виде отдельных строк?

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

И я не совсем уверен, как заставить программу останавливаться на пустой строке. Я думал, может быть, цикл while, но что будет в скобках, и как это будет сочетаться с получением пользовательского ввода?

Что я в основном пытаюсь выяснить, так это как изменить мой код для вывода пользовательского ввода в виде строк, а не одного целого оператора, и чтобы прекратить получать пользовательский ввод, когда пользователь вводит пустую строку.

1 Ответ

3 голосов
/ 26 марта 2019

Попробуйте что-то вроде этого:

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

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

    std::cout << "Enter Your Text: " << std::endl; 

    while (std::getline(std::cin, line) && !line.empty())
        text.push_back(line); 

    std::cout << "You entered: " << std::endl; 

    for (auto &s : text)
        std::cout << s << std::endl;

    return 0;
}
...