1.climits头文件定义了关于整型限制的信息,比如INT_MAX为int的最大取值,CHAR_BIT为字节的位数。
2.cin 和cout
- cout如何强制输出其他格式的文本?可以通过cout <<“format”,比如cout << hex,意思为设定接下来的输出格式为16进制。
- cin使用空白(空格,制表符和换行符)来确定字符串结束的位置。cin.get(name,size)读取整行,换行符保留在输入序列中,如要读取下一行,需要先再次cin.get()读取换行符,cin.getline(name,size)读取整行,换行符将被丢弃。
- cin会忽略空格和换行符,cin.get(char)会读取空格。
- cin.clear()恢复输入。
- 通过setf()可以设置各种格式化状态。setf(ios_base::fixed):定点表示法;setf(ios_base::showpoint):显示小数点模式;precision():定点模式下显示的小数点位数;width():设置下一次输出的字段宽度;ios_base::fmtflags用于存储set()的格式话设置。
ios_base::fmtflags initial = os.setf(ios_base::fixed); os.setf(initial);
3.宽字符类型wchar_t,需要通过wcin和wcout处理,使用前缀“L”指示宽字符常量和宽字符串,前缀“u”表示wchar16_t,前缀“U”表示wchar32_t。
4.强制类型转换
- static_cast<>可用于从一种数值类型转换为另一种数值类型。
5.auto声明(c++11)
auto声明可以根据初始值的类型判断变量的类型。
std::vector<double> scores;
auto pv = scores.begin(); //auto is the same to std::vector<double>::iterator
6.空字符被写作‘\0’,ASCII值为0
7.string类
- string类能够自动调整大小。
string str1; //create an empty string object cin >> str1; //str1 resized to fit input
8.原始字符串RAW:通过前缀R或R"+*来进行表示,中间如果出现特殊字符不需要使用转译字符。
cout << R"+* ("who ...?")+*" << endl;
9.枚举
- 枚举的取值范围定义:上限为大于最大值的最小的2的幂减去1。不小于0时,取值下限为0,小于0时,取值下限与上限计算类似。
10.指针数组与数组指针
- *ps[20]: 指针数组,数组中的每一个变量都是指针变量
- (*ps)[20]:数组指针,指向数组的指针。
11.模板类 vector
- vector<typename> vt(n_elem);
- 动态分配,存储于栈中
12.模板类 array
- array<typename, n_elem> arr;
- 静态分配,存储于堆中
13.模板类valarray
- 用于处理数值的一个数组类,定义:valarray<type>
valarray<double> v1; //an array of double, size 0
valarray<int> v2(8); //an array of 8 int elements
valarray<int> v3(10,8); // an array of 8 int elements, each set to 10
- operator[]():访问数组元素,size:返回数组大小,sum:计算所有元素总和,max/min:返回最大最小元素。
14.类型别名
-
#define BYTE char //声明变量时注意使用(),否则可能会出现问题
-
typedef typeName aliasName //不会出现#define问题,建议使用
15.字符函数库cctype
- isalpha():参数是否为字母
- isdigit():参数是否为数字
- isspace():参数是否为空格
16.文件操作
- 必须包含头文件fstream
- 写入需定义ofstream对象,与文件关联,使用open()打开,close()关闭,用法类似cout.
- 读取需定义ifstream对象,与文件关联,使用open()打开,close()关闭,用法类似cin.
- 文件结束符为EOF.
ofstream outFile;
outFile.open("fish.txt");
outFile << "happy new year" << endl;
ifstream inFile;
inFile.open(fish.txt);
char line[81];
inFile.getline(line, 80);