Tags:C++,《C++ Primer Plus》筆記
一、iostream##
頭文件 <iostream>
用于對控制臺進行輸入輸出。通常來講,對 iostream
的疑惑一般在于 cin
上,這里總結 cin
的用法。
cin >> name###
一般地,我們通過 cin >> <name>
來將一段輸入流復制到名為 name
的變量中,當然 name
變量必須已經提前聲明。
首先, cin
輸入的數據一開始都是字符類型,也就是 char
。但是, cin
的后續行為將視 name
的類型而定。
- 如果是
char
類型,則cin
讀取遇到的第一個字符,輸入到name
中。
cin
只管往后讀取,因為輸入流默認就是字符流,所以讀取到一個字符就會結束。例如輸入3.22
,前面的空格會被自動跳過,讀到3
時取到一個字符,讀取結束,.22
會被留在輸入流中,參與下一次讀取。
- 如果是
int
類型,則cin
讀取從第一個數字字符開始,到第一個非數字字符的中間部分,輸入到name
中。
同char
一樣,第一個數字字符前面的內容跳過。例如輸入13.22
,讀取得到13
。
- 如果是
double
類型,則在int
規則的基礎上,不跳過.
即可。
- 如果是
char[]
類型,則會將輸入流一直讀入,直到遇見空白字符(空格符、換行符等)。
</br>
cin.get(name)###
讀取下一個字符到name中,注意三點:
-
name
必須是char
類型變量,沒有例外。 - 不會跳過空字符。
- 不指定
name
時,即cin.get()
時,跳過輸出流中的下一個字符。
</br>
cin.get(name,Artsize),cin.getline(name,Artsize)###
兩者都可以讀取在同一行、長度為 Artsize
的一連串字符或整行字符,區別在于:
前者會在輸出流里留下一個換行符,而后者則連換行符一起讀取。
</br>
對于上述的幾種 cin
用法,都只有在用戶按了回車鍵后,輸入流才會被讀取。在很多編譯器里,這個回車也算一個換行符!。
</br>
cin文件尾條件###
逐個字符讀取時,通常我們需要判斷輸入流是否已到結尾。
若 cin.get()
在讀取下一個字符時發現沒有輸入,則會返回 EOF
,并將 cin.eofbit
和 cin.failbit
設置為1,此時 cin
將關閉讀取的功能,直至人為調用 cin.clear()
為止。
而我們可以通過 cin.eof()
或者 cin.fail()
訪問 cin.eofbit
或 cin.failbit
,若已被標記,則函數返回 true
。
下述代碼將計算輸入的字符數。
int ch;
while ((ch = cin.get()) != EOF){
cout.put(char(ch));
++count;
}
</br>
cin檢錯經典代碼###
if(!cin){
cin.clear();
while(cin.get() != '\n') continue;
cout << "Bad input;input process terminated.\n";
break;
}
</br>
二、fstream##
頭文件 <fstream>
用于對文件進行輸入輸出,使用步驟如下:
- 包含頭文件
fstream
。- 用
ofstream
操作符或ifstream
創建一個對象。- 就像使用
cout
和cin
那樣使用創建的對象。- 使用結束后,調用對象的
close()
成員函數。