1

我创建了一个文本文件,其中 3 行填充了随机单词。我想要 :

  • 单独读取文件中的每一行。
  • 按字母顺序对每行中的单词进行排序
  • 将排序后的行输出到控制台。

这是我迄今为止提出的[可运行]:https ://gist.github.com/anonymous/6211515

它读取行并将它们放入向量中,对该向量进行排序,然后将结果向量打印到控制台。但我只是对行进行排序,而不是对实际单词进行排序。我将整行作为字符串输入,这导致了我的问题。我对 C++ 编程非常陌生,我不确定应该怎么做才能对实际单词进行排序,而不是对行进行排序。

这不是家庭作业,只是建议我解决的一个问题,以便为即将到来的考试做准备。最重要的是解决方案尽可能简单,因为这次考试将使用笔和纸完成。

4

3 回答 3

2

至少如果我正确理解你想要什么,我会做这样的事情:

  1. 用 将一行读入字符串std::getline
  2. std::stringstream从字符串初始化 a
  3. 将字符串流中的单词读入向量
  4. 对向量进行排序
  5. 将排序后的单词写入输出。
  6. 重复直到完成。
于 2013-08-12T19:19:55.220 回答
1

您正在寻找的是一种lexicographical sorting算法。这意味着,对单词进行排序就像在字典中一样,按字母顺序排列。

标准 c++ 支持该算法。看看这里: http ://www.cplusplus.com/reference/algorithm/lexicographical_compare/

为了访问实现只是#include <algorithm>

于 2013-08-12T19:22:05.890 回答
0

I'm assuming you want to write an algorithm that will do this, rather than use anything at all that's pre-written.

Once you have the strings in the vector, now you need to separate each one into words. So you would want to loop through each character in each string in the vector, find the spaces (or whatever delimiter your file is using), and then put everything before each space into another vector. And delete everything you find before each space from the string once you record it, so that it doesn't show up a second time. Now you have a vector of words. Then just sort that vector the same way you're currently sorting text_file.

于 2013-08-12T19:28:20.457 回答