如何在C++中 统计多行文本中的行数、单词数及字符数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在C++中 统计多行文本中的行数、单词数及字符数相关的知识,希望对你有一定的参考价值。
哪位高手帮帮忙 写一个程序。 感激涕零!!!
问题补充:一、题目:统计多行文本中的行数、单词数及字符数
二、目的与要求
1. 目的
通过解决统计多行文本中的行数、单词数及字符数,培养学生综合利用C++语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计。
2. 基本要求
(1) 要求用C++语言编程,在Visual C++环境下调试完成;
(2) 要求划分功能模块,各个功能分别使用函数来完成;
(3) 源代码程序要求必要的注释。
三、设计方法和基本原理
1. 课题功能描述
设计一个能够统计多行文本中的行数、单词数及字符数,请运行示例程序来查看运行的效果。
注意!!!此时字符串输入时要输入多行(段)字符串,空行结束!
2. 问题详细描述
本题中英文单词的构词规则为由英文字符构成,不考虑纯数字例如:“1,250,220”,只考虑由字符构成的单词,但是单词的分隔符应该包括基本的标点符号和空格。
统计多行文本的行数、单词总数和字符总数。
3. 问题的解决方案:
根据问题的描述,可以按照程序要求的功能采用结构化的设计思想。
一、关键是思路, 单词, 行,字符,数字, 他们有什么特点:
1、单词,标准的是遇到空格后,单词数,自动加一。
2、行是以\\n结束的, 也就是说, 遇到\\n行数加一,当然也视你的操作系统而言, windows的话,就是这样。
3、字符, 空格是否记在里面? 等因素需要考虑。
4、数字,这个的统计,通过ascll表, 或者,字符,都能很好的解决。
二、例程:
#include <iostream>#include <vector>
using namespace std;
class txt
public:
txt(vector<char> cha)ch = cha;
void count_word(); //统计单词数
void count_line(); //统计行数
void count_ch(); //统计字符数
private:
vector<char> ch;
;
void txt::count_line()
int count = 0;
for (int i=0;i < ch.size();i++)
if ('\\012' == ch[i])
count++;
cout << "总行数:" << count <<endl;
void txt::count_word()
int count = 0;
bool v=true;
for (int i=0;i < ch.size();i++)
if (!(ch[i]>='a'&&ch[i]<='z')||(ch[i]>='A'&&ch[i]<='Z'))
if (v)
count++;
v=false;
else
v=true;
cout << "单词数:" << count <<endl;
void txt::count_ch()
int count = 0;
for (int i=0;i < ch.size();i++)
if ('\\012' != ch[i])
count++;
cout << "字符数:" << count <<endl;
int main()
vector<char> words;
cout << "请输入多行文本,空行结束:" <<endl;
char word;
//输入文本,不忽略空格和换行
cin.unsetf( ios::skipws );
while (cin >> word )
//判断如果输入的是数字,则返回
if (word >= '0' && word <= '9')
cout << "对不起,您输入的字符中含数字。" << endl;
return -1;
words.push_back(word);
int i = words.size();
if (words[i-2] == '\\012' && words[i-1] == '\\012')
break;
//删除最后一个空行,因空行代表结束
words.pop_back();
//定义类对象
txt t(words);
t.count_line();
t.count_word();
t.count_ch();
return 0;
参考技术A #include <stdio.h>
//判断是否换行
int isRow(char c,int &bz_r)
if(c=='\n')
bz_r++;
if(bz_r==1)
return 1;
else
return 0;
else
if(bz_r>0)
bz_r=0;
return 0;
//判断是否单词
int isWord(char c,int &bz_w)
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
bz_w++;
if(bz_w==1)
return 1;
else
return 0;
else
if(bz_w>0)
bz_w=0;
return 0;
//判断是否字符
int isLetter(char c)
if((c<'0'||c>'9')&&c!='\n')
return 1;
else
return 0;
int main ()
int row=0,word=0,letter=0;//初始化总行数 ,单词数 ,字符数
int bz_r=0,bz_w=0;//行连续出现次数 ,英文字符连续出现次数
char c;
while(bz_r<2)//如果不是空行则循环
c=getchar();
row+=isRow(c,bz_r);
word+=isWord(c,bz_w);
letter+=isLetter(c);
printf("总行数:%d\n",row);
printf("单词数:%d\n",word);
printf("字符数:%d",letter);
return 0;
参考技术B #include <iostream>
#include <vector>
using namespace std;
class txt
public:
txt(vector<char> cha)ch = cha;
void count_word(); //统计单词数
void count_line(); //统计行数
void count_ch(); //统计字符数
private:
vector<char> ch;
;
void txt::count_line()
int count = 0;
for (int i=0;i < ch.size();i++)
if ('\012' == ch[i])
count++;
cout << "总行数:" << count <<endl;
void txt::count_word()
int count = 0;
bool v=true;
for (int i=0;i < ch.size();i++)
if (!(ch[i]>='a'&&ch[i]<='z')||(ch[i]>='A'&&ch[i]<='Z'))
if (v)
count++;
v=false;
else
v=true;
cout << "单词数:" << count <<endl;
void txt::count_ch()
int count = 0;
for (int i=0;i < ch.size();i++)
if ('\012' != ch[i])
count++;
cout << "字符数:" << count <<endl;
int main()
vector<char> words;
cout << "请输入多行文本,空行结束:" <<endl;
char word;
//输入文本,不忽略空格和换行
cin.unsetf( ios::skipws );
while (cin >> word )
//判断如果输入的是数字,则返回
if (word >= '0' && word <= '9')
cout << "对不起,您输入的字符中含数字。" << endl;
return -1;
words.push_back(word);
int i = words.size();
if (words[i-2] == '\012' && words[i-1] == '\012')
break;
//删除最后一个空行,因空行代表结束
words.pop_back();
//定义类对象
txt t(words);
t.count_line();
t.count_word();
t.count_ch();
return 0;
本回答被提问者和网友采纳
Linux命令之统计文件字数字符数字节数及行数信息wc
概述
wc
命令用于统计指定文件中的字节数、字数、行数,并将统计结果显示输出。wc
是 word count
的缩写。
该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。
语法
该命令支持的选项有:
选项 | 说明 |
---|---|
-w, --words | 统计字数,一个字被定义为由空白、跳格或换行字符分隔的字符串 |
-c, --bytes | 统计字节数 |
-l, --lines | 统计行数 |
-m, --chars | 统计字符数 |
-L, --max-line-length | 打印最长行的长度 |
–help | 显示帮助信息 |
–version | 显示版本信息 |
使用
查看文件的字节数、字数、行数
如果要查看文件的字节数等信息,可以使用如下格式的命令:
# 语法
wc 文件名
# 示例
wc log.txt
输出结果说明:
7
:第一列表示行数。7
:第二列表示单词数。57
:第三列表示字节数。log.txt
:第四列表示文件名。
统计单词数
统计单词数,可以用 -w
选项。命令格式如下:
# 语法
wc -w 文件名
# 示例
wc -w log.txt
统计字节数
如果要统计字节数,需要用到 -c
选项。命令格式如下:
# 语法
wc -c 文件名
# 示例
wc -c log.txt
统计字符数
如果要统计字符数,需要用到 -m
选项。命令格式如下:
# 语法
wc -m 文件名
# 示例
wc -m log.txt
统计行数【★★★★★】
如果要统计行数,可以使用 -l
选项。命令格式如下:
# 语法
wc -l 文件名
# 示例
wc -l log.txt
不输出文件名
使用 wc
命令默认是会输出文件名的,我们可以使用如下格式的命令,就会避免输出文件名:
# 语法
cat 文件名 | wc
# 示例
cat log.txt | wc
计算字符串长度
该命令可以用来计算字符串的长度,基本语法格式如下:
# 语法
echo 字符串 | wc -m
# 示例,之所以要加上 -n 选项是因为使用 echo 命令输出会自带一个换行符,所以去除掉才会不影响真实统计结果
echo -n "hello world" | wc -m
与管道符结合使用
wc
命令很多时候都不是单独使用的,而是同其他命令连同管道符 |
一起使用的,通常是统计其他命令执行结果。如统计 /root/
目录下的文件个数:
以上是关于如何在C++中 统计多行文本中的行数、单词数及字符数的主要内容,如果未能解决你的问题,请参考以下文章