编写一个程序,读取一个文本文件的内容,统计文件中每个单词的出现次数,并将结果写入到一个新的文本文件中c++
时间: 2024-10-01 08:05:05 浏览: 41
在C++中,你可以通过以下几个步骤编写一个简单的程序来实现这个功能:
1. 打开并读取文本文件:
```cpp
#include <fstream>
#include <iostream>
#include <string>
#include <unordered_map>
std::ifstream inputFile("input.txt"); // 假设输入文件名为input.txt
std::unordered_map<std::string, int> wordCount; // 存储单词计数
if (!inputFile.is_open()) {
std::cerr << "无法打开文件!" << std::endl;
return;
}
std::string word;
while (inputFile >> word) { // 逐行读取文件内容
std::transform(word.begin(), word.end(), word.begin(), ::tolower); // 转换为小写以便统一计数
++wordCount[word]; // 每次遇到单词就增加计数
}
```
2. 关闭输入文件并打开输出文件:
```cpp
inputFile.close();
std::ofstream outputFile("output.txt"); // 输出文件名假设为output.txt
if (!outputFile.is_open()) {
std::cerr << "无法创建输出文件!" << std::endl;
return;
}
```
3. 将统计结果写入输出文件:
```cpp
for (const auto& pair : wordCount) {
outputFile << pair.first << ": " << pair.second << "\n"; // 写入单词及其出现次数
}
```
4. 关闭输出文件:
```cpp
outputFile.close();
```
完整的代码示例:
```cpp
#include <fstream>
#include <iostream>
#include <string>
#include <unordered_map>
int main() {
std::ifstream inputFile("input.txt");
std::ofstream outputFile("output.txt");
if (!inputFile || !outputFile) {
std::cerr << "文件操作错误!" << std::endl;
return 1;
}
std::unordered_map<std::string, int> wordCount;
std::string word;
while (inputFile >> word) {
std::transform(word.begin(), word.end(), word.begin(), ::tolower);
++wordCount[word];
}
inputFile.close();
outputFile.open("output.txt");
for (const auto& pair : wordCount) {
outputFile << pair.first << ": " << pair.second << "\n";
}
outputFile.close();
return 0;
}
```
阅读全文