这是我给出的作业:
编写一个程序,重复要求用户输入一个句子并按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;
}
答案 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。