运用C++实现一个命令行文本计数统计程序。能正确统计导入的纯英文txt文本中的字符数,单词数,句子数。
时间: 2024-11-03 20:23:19 浏览: 33
在C++中实现一个简单的命令行文本计数统计程序,我们可以采用标准库中的`fstream`来读取文件,`cctype`库用于处理字符,以及`sstream`来进行单词分割。以下是一个基本的步骤和代码示例:
```cpp
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <locale>
#include <cctype>
// 分割单词并返回单词数
int countWords(const std::string& line) {
int word_count = 0;
std::istringstream iss(line);
std::string word;
while (iss >> word) {
++word_count;
}
return word_count;
}
// 计算句子数,假设每行是一个完整的句子
int countSentences(const std::string& file_content) {
int sentence_count = 1; // 假设第一行也是句子
bool is_new_sentence = true;
for (char c : file_content) {
if (!std::isspace(c)) { // 如果遇到非空格字符,则开始新句
is_new_sentence = true;
} else if (is_new_sentence) { // 非空格且是句子结束
++sentence_count;
is_new_sentence = false;
}
}
return sentence_count;
}
int main() {
std::ifstream file("input.txt", std::ios::in | std::ios::binary); // 二进制模式打开防止编码问题
if (!file.is_open()) {
std::cerr << "Failed to open the file." << std::endl;
return 1;
}
std::string file_content((std::istreambuf_iterator<char>(file)), {}); // 读取整个文件内容到字符串
file.close();
size_t character_count = file_content.size(); // 字符数
int word_count = countWords(file_content);
int sentence_count = countSentences(file_content);
std::cout << "Characters: " << character_count << "\n";
std::cout << "Words: " << word_count << "\n";
std::cout << "Sentences: " << sentence_count << "\n";
return 0;
}
```
注意,这个程序假设输入文件是UTF-8编码的,并且每行代表一个句子。对于复杂的文本分析,例如处理标点符号、数字或特殊字符,可能需要更复杂的方法。
阅读全文