如何在"退出"之后让我的程序打印用户键入的所有数据。输入

时间:2017-04-26 23:59:03

标签: c++

这是我给出的作业:

  

编写一个程序,重复要求用户输入一个句子并按Enter键。您的程序会将用户键入的每个句子存储到某个容器中。当用户键入"退出"或"退出",按字母顺序将每个句子打印回屏幕,然后退出。

以下是我到目前为止:

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

using namespace std;

int main() 
{
    string data;
    vector data;
    do
    {
        cout << "Type a sentence and press enter."
            "If the word 'exit' is typed, the program will close." << endl;

        getline(cin, data);

        // validate if data is not equals to "exit"
        if (data != "exit" && data != "Exit" )
        {
            // then type back
            cout << data << endl;
        }
    }
    while (data != "exit" && data != "Exit");

    return 0;
}

2 个答案:

答案 0 :(得分:1)

您需要按照给出的指示行事:

  

编写一个程序,重复要求用户输入一个句子并按Enter键。 您的程序会将用户输入的每个句子存储到某个容器中。当用户键入&#34;退出&#34;或&#34;退出&#34;,按字母顺序将每个句子打印回屏幕,然后退出。

您不会将句子存储在任何地方,因此您无法对它们进行排序。你需要做更多这样的事情:

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

using namespace std;

int main() 
{
    string line;
    vector<string> data;

    do
    {
        cout << "Type a sentence and press enter." << endl;
        cout << "If the word 'exit' is typed, the program will close." << endl;

        if (!getline(cin, line))
            break;

        // validate if data is equal to "exit"
        if ((line == "exit") || (line == "Exit"))
            break;

        data.push_back(line); // <-- ADD THIS!!
    }
    while (true);

    // sort the data alphabetically
    sort(data.begin(), data.end()); // <-- ADD THIS!!

    // then type it back out
    for(vector<string>::iterator i = data.begin(); i != data.end(); ++i) {
        cout << *i << endl;
    }

    return 0;
}

答案 1 :(得分:0)

在寻找某种类型的排序功能时,我建议使用std:sort(),因为它是为C++创建的。您可以qsort()使用C,但不要因std:sort()而使用#include <algorithm>

{{1}}函数的作用是按升序对一系列元素进行排序,这就是你想要的。使用此函数时使用的标头是{{1}}。有关此功能的更多信息,请check this link out