C ++:从文本文件中读取单行,按字母顺序对单词进行排序
Posted
技术标签:
【中文标题】C ++:从文本文件中读取单行,按字母顺序对单词进行排序【英文标题】:C++: Read individual lines from text file, sort words alphabetically 【发布时间】:2013-08-12 19:16:52 【问题描述】:我创建了一个包含 3 行随机单词的文本文件。我想:
单独读取文件中的每一行。 按字母顺序对每行中的单词进行排序 将排序后的行输出到控制台。这是我目前想出的 [runnable]:https://gist.github.com/anonymous/6211515
它读取行并将它们放入向量中,对该向量进行排序,然后将结果向量打印到控制台。但我只是对行进行排序,而不是对实际单词进行排序。我将整行作为字符串输入,这导致了我的问题。我对 C++ 编程非常陌生,我不确定应该怎么做才能对实际单词进行排序,而不是对行进行排序。
这不是家庭作业,只是建议我解决的一个问题,以便为即将到来的考试做准备。最重要的是解决方案尽可能简单,因为这次考试将使用笔和纸完成。
【问题讨论】:
【参考方案1】:至少如果我正确理解你想要什么,我会做这样的事情:
-
用
std::getline
将一行读入字符串。
从字符串初始化std::stringstream
将字符串流中的单词读入向量中
对向量进行排序
将排序后的单词写入输出。
重复直到完成。
【讨论】:
谢谢,这听起来像是我正在寻找的解决方案。我不确定我将如何实现这一点!我以前从未使用过字符串流。这两天我才知道向量和排序! @Haugum:字符串流的工作方式与其他流一样,因此您可以(例如)使用类似:while (your_stream >> word) words.push_back(word);
【参考方案2】:
您正在寻找的是lexicographical sorting
算法。这意味着,对单词进行排序就像在字典中一样,按字母顺序排列。
标准 c++ 支持该算法。看这里:http://www.cplusplus.com/reference/algorithm/lexicographical_compare/
为了访问实现只需#include <algorithm>
【讨论】:
【参考方案3】:我假设您想编写一个算法来执行此操作,而不是使用任何预先编写的东西。
一旦向量中有字符串,现在您需要将每个字符串分成单词。因此,您可能希望遍历向量中每个字符串中的每个字符,找到空格(或文件使用的任何分隔符),然后将每个空格之前的所有内容放入另一个向量中。并在记录后从字符串中删除每个空格之前找到的所有内容,以便它不会再次出现。 现在你有了一个单词向量。然后按照您当前排序 text_file 的方式对该向量进行排序。
【讨论】:
以上是关于C ++:从文本文件中读取单行,按字母顺序对单词进行排序的主要内容,如果未能解决你的问题,请参考以下文章