重读C++primer(四)

37、
迭代器类型

上面也有说,其实迭代器类型最重要的就是对于元素的访问(*)和移动

38、
箭头运算符

it->mem与(*it).men概念相同
39、
迭代器的运算

40、
注意else是与离他最近的if进行匹配的,而不看缩进,所以最好就是加上花括号,表示的清楚
41、
switch-case函数注意小点

42、

43、
可以看一个switch-case的小例子


#include <iostream>
#include <string>
#include <vector>
using namespace std;
void main()
{      
       char cval, char_before = '\0'; //计算机中的0值表示的为'\0',可防止它的初始值(随机的)碰巧是某个字符的值.
       int char_a = 0, char_e = 0, char_i = 0, char_o = 0, char_u = 0, sum_space = 0,sum_table = 0, sum_newline = 0, sum_ff
= 0, sum_fl = 0, sum_fi = 0;
       while(cin >> std::noskipws >> cval) // 此处的std::noskipws表示的是不忽略任何地方的空白(包括制表符和空格等)
       {
              switch(cval){
                     case 'a':
                     case 'A':
                            ++char_a;
                            break;
                     case 'e':
                     case 'E':
                            ++char_e;
                            break;
                     case 'i':
                            if(char_before == 'f'){
                                   ++sum_fi;
                            }
                     case 'I':
                            ++char_i;
                            break;
                     case 'o':
                     case 'O':
                            ++char_o;
                            break;
                     case 'u':
                     case 'U':
                            ++char_u;
                            break;
                     case ' ':
                            ++sum_space;
                            break;
                     case '\t':
                            ++sum_table;
                            break;
                     case '\n':
                            ++sum_newline;
                            break;
                     case 'f':
                            if(char_before == 'f'){
                                   ++sum_ff;
                            }
                            break;
                     case 'l':
                            if(char_before == 'f'){
                                   ++sum_fl;
                            }
                            break;
              }
              char_before= cval;//将当前的字符赋给char_before,作为下次判断的依据
              //如果下次判断中char_before为f字符,那么只要再判断当前字符是否为f、l、i即可
       }
       cout<<"元音字母a的个数为:"<<char_a<<endl;
       cout<<"元音字母e的个数为:"<<char_e<<endl;
       cout<<"元音字母i的个数为:"<<char_i<<endl;
       cout<<"元音字母o的个数为:"<<char_o<<endl;
       cout<<"元音字母u的个数为:"<<char_u<<endl;
       cout<<"空格的个数为:"<<sum_space<<endl;
       cout<<"制表符的个数为:"<<sum_table<<endl;
       cout<<"换行符的个数为:"<<sum_newline<<endl;
       cout<<"字符序列ff的个数为:"<<sum_ff<<endl;
       cout<<"字符序列fl的个数为:"<<sum_fl<<endl;
       cout<<"字符序列fi的个数为:"<<sum_fi<<endl;
}

44、

45、

46、




47、

48、

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值