第6章——分支结构和逻辑操作符

本文详细介绍了C++编程中的if语句及逻辑表达式的使用方法,包括使用&、|和!代替逻辑操作符,并提供了字符函数库cctype的使用指南。此外,文章还涵盖了switch语句、break和continue语句的应用,以及读取数字的循环处理。最后,介绍了如何进行简单文件的输入输出操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

l         if语句

l         逻辑表达式

并不是所有的键盘都提供了逻辑操作符的符号,因此C++提供了另一种表示方式:

n         && 替换代表and

n         ||替换代表or

n         !替换代表not

标识符and,or和not都是C++保留字,但并不是C语言的关键字。在C语言中使用以上替换需要包含头文件iso646.h

l         字符函数库cctype

C++从C语言继承了一个与字符相关的、非常方便的函数软件包,它可以简化诸如确定字符是否为大写字母、数字、标点符号等工作,这些函数的原型是在头文件cctype中定义。

函数名称

返回值

isalnum()

参数是字母或数字,返回true

isalpha()

参数是字母,返回true

isblank()

参数是空格或水平制表符,返回true

iscntrl()

参数是控制字符,返回true

isdigit()

参数是数字,返回true

isgraph()

参数是除空格之外的打印字符,返回true

islower()

参数是小写字母,返回true

isprint()

参数是打印字符,包括空格,返回true

ispunct()

参数是标点符号,返回true

isspace()

参数是标准空白字符,如空格、进纸、换行符、回车、水平制表符或者垂直制表符,返回true

isupper()

参数是大写字母,返回true

isxdigit()

参数是十六进制的数字,返回true

tolower()

参数是大写字符,则返回其小写,否则返回该参数

toupper()

参数是小写字符,则返回其大写,否则返回该参数

l         switch语句

通常cin无法识别枚举类型。当switch语句将int值和枚举量标签进行比较时,将枚举量提升为int.另外,在while循环测试条件中,也会将枚举量提升为int类型。

l         break和continue语句

 

l         读取数字的循环

cin在接收输入时,如果发生类型不匹配,如

int n;cin>>n;

这时将发生如下情况

n         n 的值保持不变

n         不匹配的输入被保留在输入队列中

n         cin对象的一个错误标记被设置

n         对cin方法的调用将返回false.

方法返回false意味着可以用非数字输入来结束读取数字的循环。非数字输入设置错误标记意味着必须重置该标记,程序才能继续读取输入。clear()方法重置错误输入标记。

当程序发现用户输入了错误内容,采取3个步骤:

n         重置cin以接受新的输入

n         删除错误输入

n         提示用户再输入

如while(!(cin>>golf[i])){

       cin.clear();

       while(cin.get()!=’\n’)

              continue;

       cout<<”please enter right word: ”

}

l         简单文件输入/输出

n         写入到文本文件中

1.       包含头文件fstream

2.       创建ofstream对象

3.       将该ofstream对象同一个文件关联起来

4.       像使用cout一样使用该ofstream对象

 

eg:

#include <iostream>

#include <fstream>//第一步

int main()

{

       using namespace std;

       char automobile[50];

 

       ofstream outFile;//第二步

       outFile.open(“mytext.txt”);//第三步

      

       cout<<”Enter the make and model of automobile: ”;

       cin.getline(automobile,50);

      

       outFile<<”Make and model: ”<<automobile<<endl;//第四步

       outFile.close();

       return 0;

}

close()不需要使用文件名作为参数,因为outFile已经同特定文件关联起来了。在运行程序前,如果没有mytext.txt文件,程序会以此名创建一个文件;如果已经有了这个文件,则该文件内容会被程序覆盖。

n         读取文本文件

1.       包含头文件fstream

2.       创建ifstream对象

3.       将该ifstream对象同一个文件关联起来

4.       使用ifstream对象和get()方法来读取一个字符,使用ifstream对象和getline()来读取一行字符

5.       结合使用ifstream和eof()、fail()等方法来判断输入是否成功

 

ifstream对象本身被用作测试条件时,如果最后一个读取操作成功,它将被转换为布尔值。

 

eg:

#include <iostream>

#include <fstream>

#include <cstdlib>//支持exit()函数

int main()

{

       using namespace std;

       ifstream inFile;

       inFile.open(“mytext2.txt”);

       if(!inFile.is_open())

       {

              cout<<”Couldn’t open the file mytext2.txt”<<endl;

              exit(EXIT_FAILURE);

       }

      

       double value;

       int count=0;

       inFile>>value;

       while(inFile.good())

              {

++count;

inFile >> value;

}

                     if(inFile.eof())

                            cout<<”End of file reached.\n”;

                     elseif(inFile.fail())

                            cout<<”Input terminated by data mismatch.\n”

                     else

                            cout<<”Input terminated for unknown reason.\n”

                    

                     inFile.close();

                     return 0;

              }

       程序说明:

       将该ifstream对象同一个文件关联起来后要检查文件是否打开。随后分别在读取文件的第一个值和最后一个值,这样可以确保读取成功。若是出现问题,则使用以下方法:检查是否读到文件尾(EOF)。在调用eof()方法后调用fail()可确认是否发生了不匹配的错误。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值