第六章总结

好久没有看C++ primer plus 了,原来我还看了一点,今天感觉没有意思,简单翻看一下,感觉收获颇多,简单总结一下,怕以后忘了。


总结一:

#include <iostream>
int main (void) {
	char ch;
	std::cin >> ch;
	std::cout << ch+1 << std::endl;
	std::cout << ++ch << std::endl;
	return 0;
}

std::cout << ch+1 与 std::cout << ++ch 输出是不一样的。

std::cout << ch+1 输出的是数字

std::cout << ++ch 输出的是字母


总结二:

||(OR) &&(AND) 运算方式


A || B

如果A的结果是TRUE,则不会判断B,如果A的结果为FALSE,才会判断B,如果B为FALSE,结果为FALSE。


A && B

如果A的结果是FALSE,判断结果为FALSE,B不会执行。如果A为TRUE,B才会执行。


总结一下: 对于|| 只要有一个为TRUE,他不会看以后的判断了,结果为TRUE,对于&&如果有一个为FALSE,他也不会看以后的判断了,结果为FALSE。


总结三:

||(OR) &&(AND) !(NOT)的优先级

! > && > ||

! 运算符的优先级高于所有的关系运算符和算术运算符

&& 运算符的优先级低于关系运算符但大于||运算符

|| 低于关系运算符


关系运算符 <  算术运算符


! (x > 5)和

! x > 5

是不一样的意思


总结四:

逻辑关系的另一种表示方式

&& and

|| or

! not

#include <iostream>
using namespace std;
int main (void) {
	cout << "hello" and cout << " world" << endl;
	cout << "c++ "  or	cout << "Primer" << endl;
	not 0 && cout << "Primer" << endl;
	return 0;
}


总结五:

三目运算符。

const char x[2][20] = {"Jason","at your service"};
cosnt char * y = "Quillstone";

for (int i = 0;i <3;i++) 
	cout << ((i < 2) ? !i ? x[i] : y : x[1]);

请问输出什么呢?

这个我见过的够恶心的了,如果有谁比这个还恶心给我分享一下,这几天不想吃饭,想减肥。

结果为:Jason Quillstone at your service


总结六:

switch (char || int || enum)

switch语句中只能放这三种类型,其实只要里面是整数就可以运行吧。


总结七:

cin错误处理

#include <iostream>
using namespace std;

int main (void) {
	int array[10];
	for (int i = 0;i < 5;i++) {
		while (! (cin >> array[i])){
			cin.clear ();
			while (cin.get () != '\n') 
				continue;
			cout << "please enter a number: "; 
		}
	}
	for (int i = 0;i < 5;i++) {
		cout << array[i] && cout << (i == 4 ? '\n' : ' ');
	}
	return 0;
}

如果你输入的不是数字,他会进行判断,cin>>array[i] 返回FALSE而且不会进入数组中,重新重载输入。之后清空缓冲区一直遇到'\n'重新输入。

这个操作让我想起了c语言中的 scanf ("%*[^\n]"); scanf ("%*c");。


总结八:

简单文件输入/输出流

对比: cout 和 文件输出

输出流

1.必须包含头文件iostream

2.头文件iostream定义了一个用处理输出的ostream类

3.头文件iostream声明了一个名为cout的ostream变量(对象)

4.必须指明命名空间std; 

5.可以结合使用cout和运算符<<来显示各种类型的数据

文件输出

1.必须包含头文件fstream

2.头文件fstream定义了一个用于处理输出的ofstream类

3.需要声明一个或多个ofstream变量(对象), 并以自己喜欢的方式对其命名,条件是遵守命名规则。

4.必须指明命名空间。

5.需要将ofstream对象与文件关联起来。

6.使用完文件后,应使用方法close() 将其关闭

7.结合使用ofstream对象和运算符<<来输出各种类型的数据

#include <iostream>
#include <fstream>
using namespace std;
int main (void) {
	ofstream outFile;
	outFile.open ("resource.txt");
	outFile << "hello world" << endl;
	outFile.close ();
	return 0;
}


cin和文件输入对比

输入流

1.必须包含头文件iostream

2.头文件iostream定义了一个用处理输入的istream类。

3.头文件iostream声明了一个名为cin的istream变量(对象)

4.必须指令命名空间std;

5.可以结合使用cin 和运算符>>来读取各种类型的数据

6.可以使用cin和eof,fail方法来判断输入是否成功。

7.对象cin本身被用作测试条件时,如果最后一个读取粗啊哦做成功,他将被转换为TRUE,否则被转换为FALSE

输入文件

1.必须包含头文件fstream

2.头文件fstream定义了一个用于处理输入的ifstream类。

3.需要声明一个或多个ifstream变量(对象), 并以自己喜欢的额方式对其进行命名,条件是常用的命名规则。

4.必须指明命名空间std;

5.需要将ifstream对象与文件关联起来。

6.使用完文件后。应使用close()方法将其关闭

7.可结合使用ifstream对象和运算符>>来读取各种类型的数据

8.可以使用ifstream对象和get() 方法来读取一个字符,使用ifstream对象和getline() 来读取一行字符。

9.可以结合使用ifstream和eof() fail() 等方法来判断输入是否成功.

10.ifstream对象本身被用作测试条件时,如果最后一个读取操作成功,他将被转化为TRUE,否则被转换为FALSE

#include <iostream>
#include <fstream>
using namespace std;
int main (void) {
	ifstream inFile;
	inFile.open ("resource.txt");
	char szLog[128];
	inFile.getline (szLog, 128);
	cout << szLog << endl;
	inFile.close ();
	return 0;
}


1)检查是否被成功打开文件 is_open () 

成功返回TRUE,失败返回FALSE,is_open 是c++中比较新的内容如果编译器不支持就是用good(),但是good() 在检查可能存在问题,没有is_open () 那么广泛

2)判断是否遇到EOF(读到了文件尾) eof ()

遇到返回TRUE,没有则返回FALSE

3)如果在最后一次读取操作中违反了类型不匹配的情况 fail

遇到返回TRUE,没有则返回FALSE

4)可能发生如文件损坏或硬件故障 bad()

遇到返回TRUE,没有则返回FALSE

5)判断是否有任何错误 good()

有错误返回FALSE,没有错误返回TRUE




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章