第六章總結

好久沒有看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




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