if语句 |
if(test) statement;
if(a > b) cout << a << endl;
if(test) {
statement_1;
}
else {
statement_2;
}
if(test_1) { statement_1; }
else if(test_2) { statement_2; }
else { statement_3; }
逻辑表达式 |
逻辑或(OR) – || – 两者都是 false 才为 false
a > b || a > c
逻辑与(AND) – && – 两者都是 true 才为 true
a > b && a > c
逻辑非(NOT) – ! – 取相反的值
!a
- 优先级
- AND 和 OR 运算符低于关系运算符
- NOT运算符高于关系运算符
- AND 高于OR 运算符
- OR < AND < 关系运算符 < NOT
- C++中 可用 and or not 代替 && || ! – C语言需要包含iso646.h
:?运算符
a > 0 ? a : 0; // 意思是如果a > 0 为 true , 则取冒号前面的a , 否则取后面的0
< cctype > |
- 确定字符的类型 – 大小写 数字 标点 空格 等
- isalpha(ch) 是否为字符
- isdigit(ch) 是否为数字
- isspace(ch) 是否为空格
- ispunct(ch) 是否为标点
- isupper(ch) 是否为大写 – toupper()转为大写
- islower(ch) 是否为小写 – tolower()转为小写
- isalnum(ch) 是否为字母或数字
switch语句 |
switch (int_expr) { // 值为整数的表达式
case num_1 : statement_1;
case num_2 : statement_2;
...
default : statement_default;
}
- 条件分支大于3时比if-else 语句好用
- 每一个case 都可以用break 跳出, 但是没有break 的将继续执行后面的语句
- 可使用枚举量作为标签在switch语句中使用 – 会自动提升为int型
break 和 continue |
- break 直接跳出循环体
- continue 跳出当前循环体, 并开始新一轮的循环
文本I/O初探 |
输出到文件
- 包含 < fstream > 头文件
- < fstream > 定义了一个用于处理输出的 ofstream 类
- 需要自己声明一个或多个ostream类对象
- 使用此对象打开(.open()), 关闭(.close()), 输出(<<) 文本到文件
#include <iostream> #include <fstream> using namespace std; int main() { ofstream fout; // 声明此类对象 fout.open("out.txt"); // 打开文件 fout << "hello world\n"; // 输入 fout.close(); // 关闭文件 return 0; }
从文件中读取
- 包含 < fstream > 头文件
- 需要声明一个或多个 ifstream 类型的对象
- 使用此对象进行打开(.open()) , 关闭(.close()) 和 读取( >> .get() 或 getline()等)
- 需要正确设计读取循环,以读取到正确的内容
- 遇到EOF时, 方法 eof() 将返回true
- 遇到EOF 或 类型不匹配时, 方法 fail() 将返回true
- 最后一次读取文件时发生文件受损或硬件错误,方法 bad() 将返回true
- 没有发生任何错误时, 方法 good() 将返回 true – 对于上一次输入而言 (一般在前面有一条输入)
#include <iostream> #include <fstream> #include <cassert> using namespace std; int main() { ifstream fin; fin.open("in.txt"); if(!fin.is_open()) { assert(0); } // 检测是否成功打开 int x; fin >> x; // 从文件中读取 cout << x << endl; fin.close(); return 0; }