c++循环和分支
2019-10-19 本文已影响0人
镜中无我
- 表达式(都有值)的判定可能会带来副作用(变量在内存中的值发生改变)
- 赋值表达式必须加上括号之后才能被引用做值使用,并且前加操作不被当作表达式处理,而后加操作当作表达式处理当表达式的值是原始值而不是加过后的值
- for循环现在允许将int i=0 这样大的init语句作为表达式的,而在其他情况则不行
- 检测不等通常比检测相等好
- 类型别名,typedef
- cin.get()返回输入的下一个字符,而cin.get(ch)返回一个cin对象,而该对象可以作为一个bool值用于判定输入是否异常如while(cin){}这样的循环结构
- 检测文件或键盘输入结尾可以检查EOF常量标识符(或者cin.eof()函数),一般情况下ctrl+Z,enter表示输入结尾
- 可以用cin.get()锁住屏幕
- char *p[arraySize]可以用来定义一个字符串数组, 但必须给定数组的长度
分支
- 在判断语句中,可以使用value==variable的方式来防范缺写等于号的错误
- c++中&&和||都是顺序点,即先判断左边再判断右边
字符函数库(cctype)
- isalpha()判断是否是字母字符
- isalnum()是否是字母数字
- iscntrl()是否是控制字符
- isdigit()是否是数字字符
- isgraph()除空格外的字符
- islower()和isupper()
- isprint()打印字符
- ispunct()标点符号
- isxdigit()十六进制数字
- tolower()..
- 读取数字可以用cin>>,这样可以用cin本身判断输入是否匹配,并作为结束的标志
不匹配的情况下,n的值将保持不变,不匹配的输入将被留在输入队列中,cin对象中的一个错误标志被设置,对cin方法返回false,所以在输入不匹配的情况下进行下一次输入需要清楚和复位输入队列(cin.clear())以及相关标识符
- 具体操作如下
cin.clear()
while(cin.get()!='\n') continue;
- cin读取过程都是先按字符读取,针对不同的数据类型进行过程甄别,如对于int型则遇到第一个非数字字符就停止读取,将读到的所有数字字符整合成数字赋给变量
- 控制台IO只适用于文本文件
- 所有适用于标准输入输出的符号如<<,>>,endl等都适用于文件读写
- 文件写入:
包含头文件fstream,创建一个ofstream对象,将该流对象与一个文件连起来,使用<<连接输入的数据结构,这里我们可以将文件写入和读取理解成,建立管道连接的过程,首先写入时先得有一个管道(流),然后将流的一端连在文件上(通过文件地址,即打开文件的过程),流的另一端连接对应的数据结构用于输入。输入完毕后要拔下管道(关闭连接)。- 文件读取和控制台输入一致,把ifstream换成fstream即可