C++ 學習筆記之——輸入和輸出
在 C++ 中,我們通過呼叫輸入輸出流庫中的流物件 cin 和 cout 來實現輸入和輸出。
#include <iostream>
using namespace std;
int main()
{
int a = 0;
float b = 0;
char c = 0;
cin >> a >> b >> c;
cout << a << '\t' << b << '\t' << c << '\t' << endl;
return 0;
}
56 Enter
5.36 Enter
a Enter
56 5.36 a
在用 cin 進行輸入時,我們不用指定具體的資料型別,系統會根據變數的型別從輸入流中提取相應長度的位元組。同樣,用 cout 進行輸出時,系統也會自動判別輸出資料的型別使輸出的資料按相應的型別輸出。
通過 cin 讀入資料時,會自動跳過輸入流中的空格、tab 鍵和換行字元。當遇到無效字元或者檔案結束符時,輸入 cin 就會處於出錯狀態,我們可以通過判斷 cin 的值來判斷流物件是否處於正常狀態和提取操作是否成功。
另外,我們還可以使用控制符來設定輸入輸出的格式。
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int a = 256;
float b = 3.1415926525;
cout << b << endl;
cout << setprecision(9) << b << endl; // 設定精度
cout << setiosflags(ios::fixed) << setprecision(2) << b << endl; // 設定小數點位數
cout << endl << a << endl;
cout << hex << a << endl; // 十六進位制輸出
cout << dec << setfill('*') << setw(5) << a << endl; // 設定域寬和填充
cout << setiosflags(ios::showpos) << a << endl; // 顯示符號
cout << resetiosflags(ios::showpos) << a << endl; // 取消顯示符號
return 0;
}
3.14159
3.14159274
3.24
256
100
**256
+256
256
也可以使用 cout 的成員函式來設定輸入輸出的格式。
#include <iostream>
using namespace std;
int main()
{
int a = 256;
float b = 3.1415926525;
cout << b << endl;
cout.precision(9); // 設定精度
cout << b << endl;
cout.precision(2);
cout.setf(ios::fixed); // 設定固定小數點位數
cout << b << endl;
cout << endl << a << endl;
cout.setf(ios::hex, ios::basefield);
cout << a << endl;
cout.fill('*'); // 設定填充
cout.width(5); // 設定域寬
cout << a << endl;
cout.setf(ios::showpos); // 顯示符號
cout << a << endl;
cout.unsetf(ios::showpos); // 取消顯示符號
cout << a << endl;
return 0;
}
3.14159
3.14159274
3.24
256
100
**256
+256
256
為了與 C 語言相容,C++ 保留了 C 中的 scanf 和 printf 函式進行輸入輸出,以及 getchar 和 putchar 函式進行單個字元的輸入輸出。
此外,我們還可以用輸入輸出流物件的一些成員函式來實現輸入和輸出。
cout.put()
輸出單個字元,可以連續輸出cin.get()
讀入一個字元(包括空白字元),返回讀入成功的字元,如遇到檔案結束符,返回 EOFcin.get(ch)
讀入一個字元並賦值給變數 ch,成功讀入則返回真cin.get
(字元陣列或指標,字元個數 n,終止字元) 讀入 n-1 個字元,如遇到終止字元則提前結束cin.getline
(字元陣列或指標,字元個數 n,終止字元) 與上面的 cin.get 類似,但是遇到終止字元時,字元指標會移到該終止字元後面,而 cin.get 則會停留在原位置
#include <iostream>
using namespace std;
int main()
{
char ch[20] = {0};
cin >> ch[0]; // 讀入 1
cout.put(ch[0]);
cout << endl;
ch[1] = cin.get(); // 讀入 2
cout.put(ch[1]);
cout << endl;
cin.get(ch[2]); // 讀入 3
cout.put(ch[2]);
cout << endl;
cin.get(ch, 20, '/'); // 讀入 123 之後的第一個回車以及 'hello, seniusen! h' 共計 19 個字元
cout << ch << endl;
cin.get(ch, 20, '/'); // 讀入'ello, seniusen!' 共計 15 個字元,遇到終止字元 ‘/’ 停止
cout << ch << endl;
cin.getline(ch, 20, '/'); // 當前字元指標還停留在字元 ‘/’ 處,直接停止讀入,字元指標後移一位指向空格
cout << ch << endl;
cin.getline(ch, 20, '/'); // 讀入' hello, seniusen!' 共計 17 個字元,遇到終止字元 ‘/’ 停止
cout << ch << endl;
return 0;
}
123 Enter
1
2
3
hello, seniusen! hello, seniusen!/ hello, seniusen!/ Enter
hello, seniusen! h
ello, seniusen!
hello, seniusen!
一些其他的成員函式:
cin.eof()
如果到達檔案末尾(遇檔案終止符)返回真,否則返回假cin.peek()
返回當前指標指向的字元,但只是觀測,指標仍然停留在當前位置cin.putback(ch)
將字元 ch 返回到輸入流,插入到當前指標位置cin.ignore
(n, 終止字元) 跳過輸入流中 n 個字元,若遇到終止符提前結束,此時指向終止字元後面一個位置
獲取更多精彩,請關注「seniusen」!
相關文章
- 01_Numpy學習筆記(下):輸入和輸出筆記
- JAVA筆記(12)——輸入和輸出Java筆記
- Solidity語言學習筆記————24、輸入輸出引數Solid筆記
- C++學習筆記(七) - Qt 在控制檯輸出C++筆記QT
- 【C++】輸入輸出C++
- C++筆記:輸入輸出、變數、變數加減乘除C++筆記變數
- C++ 中輸入輸出流及檔案流操作筆記C++筆記
- c++入門:輸入輸出流C++
- java學習筆記--輸出本月日曆Java筆記
- Python 3 學習筆記之——鍵盤輸入和讀寫檔案Python筆記
- 《golang筆記》第三篇-輸入輸出Golang筆記
- 5,輸入與輸出(perl語言筆記)筆記
- Java I/O系統學習系列二:輸入和輸出Java
- kettle學習筆記(四)——kettle輸入步驟筆記
- C++中的檔案輸入/輸出(3):掌握輸入/輸出流 (轉)C++
- [C++]輸入/輸出流類庫C++
- C++格式化輸入輸出C++
- Hadoop學習筆記之TeraSort修改後輸出翻倍異常Hadoop筆記
- 笨辦法學C 練習24:輸入輸出和檔案
- win8 學習筆記二 輸出日誌筆記
- docker學習筆記-啟動映象輸入引數Docker筆記
- 物聯網學習教程——格式輸入與輸出
- Python 輸入和輸出Python
- linux之shell 輸入輸出Linux
- 【C++】標準檔案的輸入輸出!!!C++
- 韓語學習筆記(1)音標與輸入法筆記
- Python輸入和輸出(IO)Python
- 格式化輸入和輸出
- TCP 學習筆記(三) 可靠傳輸TCP筆記
- 組合語言學習記錄--輸入輸出字串組合語言字串
- 輸入輸出
- C++中的檔案輸入/輸出(4):檢測輸入/輸出的狀態標誌 (轉)C++
- 初學Python(六)——輸入輸出Python
- C++輸入輸出常用格式(cin,cout,stringstream)C++
- 新手學python之Python的輸入輸出函式Python函式
- iOS學習筆記01 textfield 限定輸入的文字長度iOS筆記
- 輸入和輸出基礎語法
- 輸入輸出流