所以我有一个类似5-6行文本的文件,我需要找到哪个文字最多并将其输出到另一个文件中。你们中有人有什么建议吗?
我在C ++中并不高级,我使用类,数组,没有向量等。
其他代码在我的程序中相当无关紧要,但是如果你需要它我会在这里粘贴它。
编辑:http://pastebin.com/zh7HPCtT这是我的代码,它的第一部分找到一行中有多少单词比第一个单词长。
我没有为作业的另一半添加任何其他内容。
答案 0 :(得分:3)
试试这个:
答案 1 :(得分:0)
最简单的解决方案之一是使用您将在循环中使用的字符串max
。
然后循环浏览文件中的所有行,并为每行line
将line
中的字数与max
中的字数进行比较,如果line
1}}有更多单词,将其分配给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
。有很多资源浪费,你应该让它更有状态,但它会为你提供一个起点。