用c++创建一个文件,并读取该文本文件,统计其中有多少个单词,多少个标点符号,多少个段落。将统计结果输出到屏幕上。
时间: 2024-02-24 22:55:11 浏览: 67
C++读取一文本文件并进行单词统计结果
4星 · 用户满意度95%
好的,下面是C++代码实现:
```c++
#include<iostream>
#include<fstream>
#include<string>
#include<cstring>
using namespace std;
int main()
{
string fileName = "test.txt"; // 文件名
ifstream fin(fileName.c_str()); // 以只读方式打开文件
string line; // 存放读取的每一行
int wordCount = 0, puncCount = 0, paraCount = 0; // 统计单词、标点符号、段落数
while (getline(fin, line)) // 逐行读取
{
if (line.empty()) // 如果是空行
{
paraCount++; // 段落数加1
continue; // 继续读取下一行
}
char cstr[line.length() + 1]; // 将string类型转换为char数组
strcpy(cstr, line.c_str());
char* pch = strtok(cstr, " ,.?!:;-()\""); // 按照空格、逗号、句号等分隔符分割字符串
while (pch != NULL) // 分割后的每个字符串
{
int len = strlen(pch);
if (len > 1) // 如果长度大于1,就是一个单词
wordCount++;
else if (ispunct(pch[0])) // 如果是一个标点符号
puncCount++;
pch = strtok(NULL, " ,.?!:;-()\""); // 继续分割下一个字符串
}
}
fin.close(); // 关闭文件
paraCount++; // 最后一段没有空行,需要加1
cout << "单词数:" << wordCount << endl;
cout << "标点符号数:" << puncCount << endl;
cout << "段落数:" << paraCount << endl;
return 0;
}
```
这段代码的实现思路是:先按行读取文件,如果遇到空行就累加段落数,否则按照空格、逗号、句号等分隔符分割每一行,统计单词数和标点符号数。最后输出统计结果。
阅读全文