统计空格、制表符和换行符以及ff,fl,fi

一道练习题:请编写一段程序,统计元音字母,空格、制表符和换行符以及ff,fl,fi的数量。

分析一下这道题,其实有3层意思:元音一层,符号一层,双字母一层。

刚开始我用的是string型+switch来处理元音一层和双字母一层可以解决。当我将符号也添加进switch时发现无法统计,查阅书籍后才明白:string对象会自动忽略开头的空白(即空格符、换行符、制表符)并从第一个真正的字符开始读起,直到遇到下一处空白为止。所以用string来处理不可行。

然后,我又换做getline(cin,str)来处理,结果是换行符无法统计,查书后明白:getline函数从给定的输入流中读入内容,直到遇到换行符为止(换行符也被读进来),然后把所读内容存入string对象中(不存换行符)。getline只要一遇到换行符就结束操作并返回结果。由此可见,getline也不能实现。

好吧,只能用char类型了。这回元音和符号是实现了,可是双字母又卡克了。(想了很长时间)在快睡觉的时候突然就想到了一个方法,在case:‘f’后面再加输入函数,在判断。今早一试果然完美实现。代码如下:

case 'f':
	istr=cin.get();
	if(istr=='f')++ffcnt;
	if(istr=='l')++flcnt;
	if(istr=='i')++ficnt;
	break;
附:1、在解决这个问题时遇到了一个问题:关于文本结束符Ctrl+Z不灵。上网查了一下,按网友说得修改代码如下
istr=cin.get();
while(istr!=EOF)
在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以 字符ASCII代码值的形式存放。我们知道, ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。——摘录百度百科EOF
2、以上查阅书籍均为《C++Primer中文版(第5版)》 王刚 杨巨峰 译  电子工业出版社

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值