使用C++。假设有一个文本文件中存放了一篇文章,其中有英文字母、数字、汉字(汉字和中文标点符号等都占2个字节,中文标点符号等只要是非ASCII码都简单计算为中文)、中文句号。请编程统计它们各自的个数以及文本的总行数(空行也要计入总行数)。
时间: 2024-02-15 11:02:42 浏览: 77
统计大文件中各个字符的数量(中文、英文、数字)
5星 · 资源好评率100%
好的,这是一个比较常见的文本处理问题。下面是一个C++的实现,可以统计英文字母、数字、汉字和中文句号的个数,以及文本的总行数:
```cpp
#include <iostream>
#include <fstream>
#include <cstring>
#include <cctype>
using namespace std;
const int MAX_LINE_LEN = 1024; // 假设每行最多包含1024个字符
int main() {
char line[MAX_LINE_LEN]; //存储每行的字符串
int line_count = 0; // 总行数
int char_count = 0; //英文字母和数字的个数
int chinese_count = 0; // 汉字的个数
int dot_count = 0; // 中文句号的个数
ifstream fin("article.txt"); // 打开文件
if (!fin) { // 文件打开失败
cerr << "文件打开失败!" << endl;
return 1;
}
while (fin.getline(line, MAX_LINE_LEN)) { // 逐行读取
line_count++; // 总行数加1
int len = strlen(line); // 获取当前行的长度
for (int i = 0; i < len; i++) { // 遍历当前行的每一个字符
if (isalpha(line[i]) || isdigit(line[i])) { // 如果是英文字母或数字
char_count++;
} else if ((line[i] & 0xff00) == 0x8100) { // 如果是汉字或中文标点符号
chinese_count++;
} else if (line[i] == '。') { // 如果是中文句号
dot_count++;
}
}
}
// 输出统计结果
cout << "总行数:" << line_count << endl;
cout << "英文字母和数字个数:" << char_count << endl;
cout << "汉字个数:" << chinese_count << endl;
cout << "中文句号个数:" << dot_count << endl;
fin.close(); // 关闭文件
return 0;
}
```
程序中使用了一个字符数组来存储每行的字符串,使用了一个循环来逐个字符地遍历每一行,并根据字符的类型来统计各种字符的个数。需要注意的是,汉字和中文标点符号都占2个字节,因此需要用位运算来判断是否是汉字或中文标点符号。
阅读全文