好久沒有看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;
}
成功返回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