CPP_Basic_Summary_0.6

版权声明:本文虽为 贴墙上的咖啡 原创,未经允许仍可转载. https://blog.csdn.net/enochhugh/article/details/66978232

##CPP_Basic_Summary_0.6

1、if语句:必须决定是否执行某个操作时启用,true执行,false跳过
2、if else可以循环嵌套,比如:

if ()
	{something};
else if ()
	{something};
else
	{something};

3、条件运算符的错误防范:应该将variablevalue反转为valuevariable,
因为可以利用编译器更容易捕捉到异常,避免出现if (3=number)的错误
4、逻辑OR使用||表示,或真则真,其是顺序点,先判断左侧,为true则不再判断右侧;
逻辑AND使用&&表示,且假则假,其余同理;逻辑NOT使用!表示,直接对值取反,为此特别需要注意的是:!运算符的优先级高于所有的关系运算符和算术运算符,所以对表达式取反时,必须用括号将表达式括起再取反。然后逻辑运算符AND的优先级高于OR,所以一般不论何种优先级,尽可能使用括号将顺序表现出来而不管是否确实需要括号
5、使用&&来设置取值范围的时候,注意取值范围之间没有缝隙产生,也没重叠;另外,应该注意不要使用if (17<age<49)这样的数学表达式,在C++中会被理解为:if ((17<age)<49),结果将始终为true,必须使用&&连接两个范围:if (age>17&&age<49)
6、如果给一个读取int的程序输入一个过大的值,很多C++实现将会仅仅把这个值截断为合适的大小,并不会通知数据的丢失,所以其中一种方式就是使用double或者long long读取可能的int数据,这样可以防止程序数据溢出,提高鲁棒性
7、C++确保程序从左到右进行逻辑表达式的计算,并在确定结果后立刻停止。
8、&&、||、!运算符也可以用and、or和not分别来表示
9、字符函数库cctype:

函数名称 返回值
isalnum() 字母数字,返回true
isalpha() 字母,返回true
iscntrl() 控制字符,返回true
isdigit() 数字0~9,返回true
isprint() 打印字符(含空格),返回true
isgraph() 打印字符(不含空格),返回true
isupper() 大写字母,返回true
islower() 小写字母,返回true
ispunct() 标点符号,返回true
isspace() 空白符,返回true
isxdigit() 十六进制数,返回true
tolower() 大写字母,返回其小写,否则返回该参数
toupper() 小写字母,返回其大写,否则返回该参数

10、?:运算符: expression1?expression2:expression3
若表达式1为true则整个表达式的值为表达式2的值,否则整个表达式的值为表达式3的值。在特殊的编程情况下,可用来隐藏代码。一般情况,简单可用?:,复杂应该使用if else
11、switch语句:选择值必须是一个结果为整数值的表达式,可以是int、char或者enum

switch (integer-expression)
{
	case label1:statement
	break;
	default:statement
}

12、在while测试中,以及switch语句将int值和enum比较时,将会对enum执行int提升
13、break和contiune区别:前者将将跳过循环剩余部分离开循环,继续执行后面的语句,后者直接返回条件测试处继续循环,(for ()将会更新测试条件后继续循环,while ()则会直接跳到测试表达式继续循环 )
14、需要注意goto标签语句应该全力避免使用,容易破坏程序的逻辑数据结构和算法流程
15、如果使用cin读取数字却输入了一个字母,也就是类型不匹配的时候,对cin的调用如果被转换为bool类型,将返回false,这意味着可以用非数字输入来结束读取数字的循环,另外,这时候设置的输入错误标记需要使用cin.clear()和cin.get()来重置输入流才可继续输入。需要注意的是,这一方法也会重置EOF文件尾条件
16、可使用AND逻辑控制循环的写入,比如:while (i<max&&cin>>fish[i]) 当左侧为false时,右侧表达式也就是读取表达式将不会被判断
17、使用cin输入,程序将输入视为一系列的字节,其中每个字节都被解释为字符编码,不论目标数据类型是什么,输入一开始都是字符数据——文本数据。之后,cin对象才负责将文本转换为其它类型:

char n;
cin>>n;//这里不会转换,但是存储的是字符的编码
int n;
cin>>n;//不断读取直到遇到非数字字符
double n;
cin>>n;//不断读取直到遇到第一个不属于浮点数的字符
char word[50];
cin>>word;//不断读取直到遇到空白字符
char word[50];
cin.getline(word,50);//不断读取直到遇到换行符,所有字符都被存储到word中,并在末尾加上一个空字符,换行符被丢弃,输入队列中的下一个字符是下一行中的第一个字符

18、对于输出将执行相反的转换,也就是整数被转换为数字字符序列,浮点数被转换为数字字符和其它字符组成的字符序列,而字符数据不需要做任何转换
19、写入到文本文件中:
首先,必须包含头文件fstream,其定义了一个用于输出的ofstream类;其次,必须声明ofstream变量(对象),比如:ofstream fout; 再次,必须指明名称空间std::;然后,必须将声明的变量(对象)与文件用open()方法关联起来,比如:fout.open(filename);最后,写入完后应该使用close()方法将其安全关闭,比如: fout.close() 括号内不需要文件名,因为已经关联过了,如果忘记则会在程序正常终止时自动关闭它。其余<<和>>运算符的用法类似cout
20、从文本文件读取:
同上,只不过创建变量用ifstream,用法也类似cin
21、检查文件是否被打开使用is_open(),类似于:

inFIle.open("Z-Tech.txt");
if (!inFile.is_open())
{
	exit(EXIT_FAILURE)}

22、Windows下的文本文件每行都以回车字符和换行符结尾,通常情况下C++在读取时将这两个字符转换为换行符,并在写入文件时执行相反的转换;而在MAC OS上的部分编辑器不会自动在最后一行末尾加上换行符,因此需要手动在结尾按个回车再保存文件。
23、一般情况下,使用good()方法,如果读取没有任何错误则返回true:while (inFile.good())
24、然而也可以更精确地确定异常产生的原因:

if (inFile.eof())
	cout<<"End of file reached.\n";
else if (inFile.fail())
	cout<<"Input terminated by data mismatch.\n";
else
	cout<<"Unknown reason.\n";

26、可用以下更精简的结构测试成功的同时读取

while (inFile>>value)
{
	something;
}

猜你喜欢

转载自blog.csdn.net/enochhugh/article/details/66978232
cpp