编写一个程序从一个英文文本文件mydoc.txt中读入全部文字,统计每个字母(不分大小写)出现的次数,并将统计结果写入另一个文本文件count.txt中。c++
时间: 2024-12-19 19:16:02 浏览: 11
java2word:Java2word是一个库,可从Java代码生成MS Word文档,而无需任何特殊组件
为了编写一个C++程序来完成这个任务,你可以按照以下步骤操作:
1. 首先,打开并读取`mydoc.txt`文件中的内容,可以使用fstream库。
2. 对文本进行预处理,移除非字母字符并将所有字母转换成小写,以便进行统一计数。
3. 使用一个map存储字母及其对应的出现次数。
4. 遍历读取到的文本,更新map中的计数。
5. 最后,将统计结果写入`count.txt`文件。
这是一个简单的示例代码:
```cpp
#include <iostream>
#include <fstream>
#include <map>
#include <algorithm> // for tolower
std::map<char, int> count_letters(const std::string& text) {
std::map<char, int> letter_count;
for (char c : text) {
if (isalpha(c)) { // 检查是否是字母
char lower_c = tolower(c); // 转换为小写
++letter_count[lower_c];
}
}
return letter_count;
}
void write_to_file(const std::map<char, int>& counts, const std::string& output_filename) {
std::ofstream file(output_filename);
if (file.is_open()) {
for (const auto& pair : counts) {
file << pair.first << ": " << pair.second << "\n";
}
file.close();
} else {
std::cerr << "Could not open output file.\n";
}
}
int main() {
std::ifstream input("mydoc.txt");
std::string text((std::istreambuf_iterator<char>(input)), {}); // read entire file into string
input.close();
std::map<char, int> letter_counts = count_letters(text);
write_to_file(letter_counts, "count.txt");
return 0;
}
```
阅读全文