用C++编写一个程序,读取一个文本文件的内容,统计文件中每个单词的出现次数,并将结果写入到一个新的文本文件中。
时间: 2024-09-30 22:09:43 浏览: 30
在 C++ 中,可以使用标准库中的 `<fstream>` 和 `<sstream>` 面向流的类来实现这个功能。首先读取文本文件,分割每一行并计数单词出现次数,然后将结果写入新文件。以下是一个基本的步骤:
```cpp
#include <fstream>
#include <sstream>
#include <map>
#include <string>
#include <vector>
void count_words(const std::string& filename_in, const std::string& filename_out) {
std::ifstream file_in(filename_in);
std::ofstream file_out(filename_out);
std::map<std::string, int> word_count;
if (!file_in.is_open()) {
std::cerr << "无法打开输入文件!" << std::endl;
return;
}
std::string line;
while (std::getline(file_in, line)) {
std::istringstream iss(line);
std::string word;
while (iss >> word) {
std::transform(word.begin(), word.end(), word.begin(), ::tolower); // 转换为小写以便统计
++word_count[word];
}
}
file_in.close();
for (const auto &entry : word_count) {
file_out << entry.first << ": " << entry.second << std::endl;
}
file_out.close();
}
int main() {
std::string input_file = "input.txt";
std::string output_file = "output.txt";
count_words(input_file, output_file);
return 0;
}
```
这个程序首先打开输入文件,逐行读取,对每一行进行分割,统计每个单词出现的次数,将结果存储在一个关联数组 `word_count` 中。最后,将统计结果写入到指定的新文件。
注意这里假设所有单词都是由字母组成,且忽略大小写。如果需要处理更复杂的文本,比如包含标点、数字或特殊字符,还需要进行适当的预处理。
阅读全文