读取多行文本,直到空白行

时间:2019-03-25 23:08:10

标签: c++ string iostream

我正在开发一个程序,该程序可以使用户输入文本,直到该程序读取空白行。到目前为止,我有这个:

#include <iostream>
#include <cstring>

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

但是,这只会将我的文本输出为一行,而不会像我希望的那样输出单个行。然后,当该部分读取空白行时,该部分表示用户输入的结尾。

我了解到getline()获得了所有用户输入,但是如何将其显示为单独的行呢?

我读到我可能必须使用一个分词器,但是对于它们的工作方式以及您实际编写一个的方式,我感到困惑。我当时在考虑使用向量或某种数组,但是向量是我唯一熟悉的那些。

我不太确定如何使程序停在空白行。我当时在想可能是while循环,但是括号中会出现什么,以及如何与获取用户输入相结合?

我基本上想弄清楚的是如何修改代码以将用户输入输出为行而不是一个完整的语句,并在用户输入空白行时停止获取用户输入。

1 个答案:

答案 0 :(得分:3)

尝试这样的事情:

#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;
}