[读书笔记] - <Essential C++> - 第一章: C++ 编程基础
关键词:
called: 调用;
invoked: 唤起;
常用命令:
cout: 输出(see out);
cin: 输入(see in);
cerr: 错误信息输出(see error);
小知识点:
1. main() 函数的返回值
在 main() 函数的结尾必有 return 命令返回结果, 若在其末尾没有写这一语句的话, 编译时会被自动加上;
2. <iostream>
包含标准输入输出流函数的文件, 如 cout, cin 就是当中的函数, 若要使用必须包含该头文件;
3. 转义序列
'\n': 换行字符(newline)
'\t': 定位(跳格)字符(tab)
'\0': null
'\'': 单引号(single quote)
'\"': 双引号(double quote)
'\\': 反斜杆(backslash)
4. if 语句中的判断式
若逻辑运算符为 "||" 且运算符左边的计算结果为 true 的话, 则由此可判断出判断式的值必为 true, 故不会对运算符右边的表达式进行计算;
若逻辑运算符为 "&&" 且运算符左边的计算结果为 false 的话, 则由此可判断出判断式的值必为 false, 故不会对运算符右边的表达式进行计算;
反之则会计算出整个判断式的值;
5. 运算符的优先级 (precedence)
逻辑运算符: NOT(!)
算术运算符: (*, /, %)
算术运算符: (+, -)
相对关联运算符: (<, >, <=, >=)
逻辑运算符: AND(&&)
逻辑运算符: OR(||)
赋值运算符: (=)
6. 数组与向量的定义
数组: int arr[size], 其中 size 必须是常量表达式;
向量: vector<type> vec(size) or vector<type> vec(arr, arr + size), 其中 arr 也 type 型的数组;
注: 第二个参数为 arr + size, 而不是 arr + size - 1;
7. 指针
为了防止对 null 指针进行提取操作, 在使用前可以先加一个判断: if (pi)
如果要通过指针来选择操作行为, 必须改用 arrow(->) (而非 dot) 成员选择运算符;
8. 随机数
通过 <cstdlib> 中的 srand() 与 rand() 两个函数来实现, 其中 srand(int seed) 用于产生随机数种子, 而 rand() 则是利用种子产生随机数
9. cerr 与 cout 的区别
两者都会将结果输出到用户的终端机上, 而两者的唯一差别是, cerr 的输出结果并无缓存 (bufferred) 情形-- -- 它会立即显示于用户终端机上
10. 文件的读写
头文件: <fstream>
ofstream:
eg: ofstream outfile("filename"); ofstream outfile("filename", ios_base::app);
以输出模式打开文件, 若文件不存在, 则会自动创建; 若以第一种方式打开文件, 则原文件中的数据会被丢弃; 若想保留原数据, 则可以用第二种方式以追加模式打开文件;
ifstream:
eg: ifstream infile("filename");
以输入模式打开文件, 若打开失败, 则 infile 对象将会被核定为 false; 如果成功, 则该文件的写入位置会被设定在起始处;
读取操作: infile >> str;
每次会读取以空格为间隔的一段数据, 若已达到文件尾端, 则 str 会被核定为 false;
fstream:
eg: fstream iofile("filename", ios_base::in|ios_base::app);
注: 这时文件位置指针位于尾端, 若这时进行读取操作, 则会马上遇到 "读完" 的状况, seekg(int ) 可重新定位文件位置指针; eg: iofile.seekg(0);