《C++ Primer Plus》学习笔记——第六章 分支语句和逻辑运算符(二)

switch 语句

switch语句更容易从大型列表中选择。

switch (inter-expression)
{
    case label1: statements;
                    break;
    case label2: statements;
                    break;  
    case label3: statements;
                    break; 
    default :statements; 
}

执行switch语句,程序将跳到使用inter-expression的值标记(label)的那一行。case标签只是行标签,而不是选项之间的界线。需要用break语句跳出switch语句。如果没有break语句,将执行下一个case行,直到遇到break或结束。

将枚举量用作行标签:

switch语句将int值和枚举量标签进行比较时,将枚举量提升为int。

switch语句与if else语句都允许程序在选项中选择,但if else更通用,它可以处理取值范围。

break和continue语句

continue用于循环体中,让程序跳过循环体中的余下代码开始新一轮的循环。

break直接跳过循环,执行下一个语句。

与C语言一样,C++也有goto语句。下面的语句将跳到使用paris:作为标签的位置。

goto paris;

 

paris:statement;

在大多数情况下,使用goto语句不好,应使用结构化控制语句来控制语句的流程。

读取数字的循环

在读取数字时,如果发现类型不匹配,会发生下列四种情况:

  • 读取的值保持不变
  • 不匹配的输入将被留在输入队列中
  • cin对象中的一个错误标记被设置;
  • 对cin的调用会报错

错误标记意味着必须重置标记,才能继续读取输入。clear()重置错误标记,也重置文件尾。

当程序发现用户输入错误时,应采取3个步骤:

  1. 重置cin以接受新的输入
  2. 删除错误输入
  3. 提醒用户再输入

例:

while (!cin>>golf[i])//发生读取错误
{
    cin.clear ();//清除错误标记
    while (cin.get()!='\n')
        continue;            //删除错误输入
    cout<<"Please enter a number:"//提醒再输入
}

简单文件输入输出

使用文件输出(写入文本文件)的主要步骤:

  1. 包含头文件fstream包含名称空间std
  2. 创建一个ofstream对象 :ofstream outFile;
  3. 将该ofstream对象同一个文件关联起来 :outFile.open("carinfo.txt");//使用完之后,需要关闭 outFile.close();
  4. 就像使用cout那样使用该ofstream对象

文件输入(读取文本文件)与上述类似:

  1. 包含头文件fstream包含名称空间std
  2. 创建一个ifstream对象 :ifstream inFile;
  3. 将该ifstream对象同一个文件关联起来 :inFile.open("carinfo.txt");//使用完之后,需要关闭 inFile.close();
  4. 就像使用cin那样使用该ifstream对象

需要检查文件是否打开成功:

C++11
inFile.open("txt");
if (!inFile.is_open())
{
    exit (EXIT_FAILURE);
}
//老版本
inFile >> value; //读取第一个值
while (inFile.good()) //当值不报错
{
    inFile >> value;//读取下一个值
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值