C++ Primer Plus 第六章 分支语句和逻辑运算符
分支语句和逻辑运算符
if语句
和c语言一样
if else 语句
同上
逻辑表达式
在C语言中包含三类布尔操作符:OR操作(||)、AND操作(&&)以及NOT操作(!),而Python可以直接使用OR(or)、AND(and)以及NOT(not)
其中,在||与逗号之间都是一种操作优先级点。即在进行操作时会先计算左边的操作数再处理右边的操作数。值得注意的是,在这种情况下如果左边的操作结果为真,则右边的操作将不会被执行。
&&同理
逻辑运算符and与or在优先级上均低于关系运算符;而逻辑非运算符!在优先级上超过了所有的关系以及算术运算符
and的优先级高于or
! > … > and > or
其中 and or 和 not 也是C++中的保留字,所以&& || !可以用and or not 代替。
字符函数库 cctype
isalpha(ch)
如果ch 是一个字母,则该函数返回一个非零值,否则返回0.
ispunct(ch)
如果ch 是标点符号,则该函数返回true。
其余函数在C++ primer plus P148
?:运算符
A = expression1 ? expression2 : expression3
//类似于Python的 expression2 if expression1 else expression3
switch 和 if else
和C相似
break 和 continue
和C相似
读取数字
对于:
int n;
cin >> n;
如果用户输入一个字母,将有:
- n的值不发生变化
- 未匹配的输入会被保留在输入队列中
- 一个错误标记被设置在cin对象中
- 使用该方法会导致程序返回false
如果要继续输入则:
- 重置cin以接受新的输入。
- 删除错误的输入。
- 提示用户再输入。
cin.clear();
while(cin.get() != '\n')
continue;
简单的文件输入/输出
- 包括头文件 fstream
- 宣布若干个 ofstream 类型的变量(对象)
- 指定 std 资域
- 通过 open() 方法将 ofstream 对象与之相关联
- 处理完成后利用 close() 方法关闭相关文件
ofstream outFile;
ofstream fout;
outFile.open("fish.txt");
char filename[50];
cin >> filename;
fout.open(filename);
该方法仅接受一个遵循C=风格的字符串作为参数。这也意味着该字符串既可以以字面形式直接给出(即为显式字符串),也可以以存储于数组中的形式提供(即为隐式引用)。
ofstream对象能够继承和应用cout所拥有的各种功能。不仅可以通过运算符<<进行操作,还可以通过多种格式化方法实现不同的输出效果,请注意例如setf()和precision()等函数的使用。
请注意:当打开现有文件时,默认情况下其长度会被自动缩短至零;因此原先保存的内容可能会被丢失
读取文件:
ifstream对象能够通过open()方法与文件建立关联,并进而可调用get()和getline()"来逐行读取文件内容。
ifstream inFile;
ifstream fin;
创建一个ifstream对象并与该文件建立关联后,类似于通过 cin 操作它。任何可用于 cin 的功能和操作都适用于 ifstream 对象。
使用is_open()检查文件是否成功打开:
inFile.open("bowling.txt")
if (!inFile.is_open())
{
exit(EXIT_FAILURE);
}
exit()用于终止程序。good()方法也可以用于检测文件是否打开。
eof()方法用于判断是否达到了结束输入的状态,请确保在处理数据时注意可能出现的结束标志情况。fail()函数则会检测上一次操作是否出现了数据类型不符的情况,并根据结果返回相应的布尔值。
