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()可确认是否发生了不匹配的错误。