查找单词最多的行并将其输出到文本文件中.C++
Finding the line that has the most words and output it to text file. C++
所以我有一个大约有5-6行文本的文件,我需要找到哪一个单词最多,并将其输出到另一个文件中。你们有什么建议吗?
我在C++方面没有那么高级,我使用类、数组,没有向量之类的。
其他代码在我的程序中是不相关的,但如果你需要它,我会把它粘贴在这里。
编辑:http://pastebin.com/zh7HPCtT这是我的代码,它的第一部分计算一行中有多少单词比第一个单词长。
我没有为任务的另一半添加任何其他内容。
试试这个:
- 读取每一行
- 数数里面的单词
- 如果它的单词比你看到的任何其他行都多,请保存它
- 文件用完后,打印保存的行
最简单的解决方案之一是使用将在循环中使用的字符串max
。
然后在文件中的所有行上循环,对于每一行line
,将line
中的字数与max
中的字数进行比较,如果line
中的字数更多,则将其分配给max
。
完成所有行的操作后,打开一个文件或直接转储到标准输出(使用户可以将输出重定向到某个文件本身),然后打印max
。
核心算法非常类似于找到两个数字的最大值,事实上,您可以使用标准库中的std::max
,并使用自己的比较器。
只是为了好玩,这里有一个非常次优的解决方案:
#include <algorithm>
#include <sstream>
#include <string>
#include <iostream>
std::string longest_phrase (std::istream &is) {
std::string longest, current_line;
while (getline(is, current_line))
longest = max(longest, current_line, [] (std::string const &lhs, std::string const &rhs) {
std::stringstream lhss(lhs), rhss(rhs);
std::string sink;
int words_lhs = 0, words_rhs = 0;
while (lhss >> sink) ++words_lhs;
while (rhss >> sink) ++words_rhs;
return words_lhs < words_rhs;
});
return longest;
}
std::string longest_phrase (std::string const &content) {
std::istringstream ss(content);
return longest_phrase(ss);
}
int main () {
std::cout << longest_phrase("Hello, I am a cat!n"
"Hello, I am an unhappy bear!n"
"Pardon?!n"
"WtfOMG!?=§"$%&/!!?µ€@+%$§==!!!") << 'n';
}
它将输出Hello, I am an unhappy bear!n
。有很多资源浪费,你应该让它更有状态,但它会为你提供一个起点。
相关文章:
- C++ 以相反的顺序输出文本文件
- 如何在不移动C 中的光标坐标的情况下输出文本以控制特定坐标
- 输出文本文件的位置
- 从输入复制到输出文本文件
- 输入和输出文本文件
- 您如何在输出文本的同时接受用户输入
- 如何从随机数中输出文本
- 使用读取系统调用C++输出文本
- 输出文本C++
- 将输出文本与 cout 对齐到右侧
- 如何在不使用cout/printf的情况下输出文本在cpp和c中
- 用户在输出文本时输入到控制台
- C++每x次输出文本
- outFile C++未写入输出文本
- C++:将输出文本格式化为.doc/.docx/.rtf(第2部分)
- 将输出文本格式化为.doc/.docx
- 从长期运行的控制台应用程序(C++)输入和输出文本
- 主函数不输出文本文件行
- 输出文本文件数据到字符数组
- 如何在c++中输出文本到打印机