中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C/C++中I/O進階怎么用

發布時間:2021-09-03 09:30:19 來源:億速云 閱讀:132 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關C/C++中I/O進階怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

概述

C++ 的輸入 (input stream) 和輸出 (output stream)是由若干字節組成的字節序列, 使得數據按順序從一個對象傳送到另一對象. 流 (stream) 表示量信息從源到目的端的流動.

C/C++中I/O進階怎么用

C++ 的輸入輸出包括:

標準 I/O: 對系統指定的標準設備的輸入

文件 I/O: 對磁盤文件的輸入和輸出

串 I/O: 對內存中指定的空間進行的輸入和輸出

I/O 類庫

I/O stream 類庫:

C/C++中I/O進階怎么用

頭文件是程序與類庫的接口, iostream 類庫的接口分別由不同的文件來實現.

常用的頭文件:

iostream: 包含對 I/O 進行操作的基本信息

fstream: 用于用戶管理的文件的 I/O 操作

strstream: 用于字符串流的 I/O 操作

stdiostream: 用于混合使用 C 和 C++ 的 I/O 機制

iomanip: 使用格式化 I/O 時的操作

I/O 中的重載

在之前的文章中我們使用<<>>來實現控制臺的輸出和輸入.

C/C++中I/O進階怎么用

<<>>被重載來用于標準類型數據的輸出和輸入:

  • <<>>本來是 C++ 中的左位移運算符和右位移運算符

  • 在 iostream 頭文件中<<>>被重載了

  • 在使用<<>>的時候, 我們必須#include <iostream>

在 input stream 和 output stream 類中對位移運算符<<>>進行重載的成員函數, 包括:

  • ostream operator << (int );

  • ostream operator << (float );

  • ostream operator << (char );

  • ostream operator << (char *);

注: 想將<<>>用于自己聲明的類型數據必須對<<>>進行重載.

流對象

I/O stream 頭文件還定義了 4 種流對象:

  • cin: 從標準輸入設備輸入到內存的數據流對象, 稱- 為 cin 流或標準輸入流

  • cout: 從內存輸出到控制臺的數據流對象, 稱為 cout 流或標準輸出流

  • cerr 和 clog: 向控制臺輸出錯誤信息

例如:

C/C++中I/O進階怎么用

當我們從鍵盤輸入 “World”, cin 會把字符串存入內存, 當我們調用 cout, 內存中的 “World” 就被輸出到控制臺上.

標準輸入流

標準輸出流, 是流向標準輸出設備的數據. ostream 類定義了 3 個輸出流對象: cout, cerr, clog.

cin 流對象

cin 是 istream 類的對象, 從標準輸入設備獲取數據. 程序中的變量通過流提取符>>從 cin 流中提取數據:

流提取符>>從流中提取數據時, 通常跳過流中的空格, tab 鍵, 換行符等空白字符

只有在輸入完數據再按回車鍵后, 該行數據才被送入鍵盤緩沖區, 形成輸入流. 提取運算符>>才能從中提取數據

程序將從鍵盤緩沖區中連續的獲得數據

當遇到無效字符或文件結束符^Z時, cin 無法正常提取數據, 處于出錯狀態, 返回 0 值 (false)

C/C++中I/O進階怎么用

案例

輸入個數不確定的成績:

#include <iostream>
#include <valarray>
using namespace std;

int main() {
    // 定義變量
    double grade;
    cout << "enter your grade:\n";
    while (cin >> grade){
        if(grade >= 85){
            cout << grade << " Good!" << endl;
        }
        if(grade < 60){
            cout << grade << " fail" << endl;
        }
        cout << "enter your grade:\n";
    }
    cout << "The end." << endl;

    return 0;
}

輸出結果:

enter your grade:
90
90 Good!
enter your grade:
12
12 fail
enter your grade:
^Z
The end.

get 函數

不帶參數的 get 函數:

cin.get()
  • 從輸入流中提取一個字符, 返回讀入的字符

  • 遇到輸入流中的文件結束符, 則返回 EOF (End Of File)

有一個參數的 get 函數:

cin.get(c)
  • 從輸入流中讀取一個字符, 賦值給字符變量 c

  • 讀取成功返回真, 失敗或遇到文件結束符返回 0 (false)

有 3 個參數的 get 函數:

cin.get(字符數組或指針, n, 終止字符)
  • 從輸入流中讀取 n-1 個字符, 賦值給指定的字符數組

  • 若在讀取 n-1 個字符之前遇到指定的終止字符, 則提前結束讀取

  • 讀取成功函數返回真, 失敗返回 0 (false)

getline 函數

getline 函數的作用是從輸入流中讀取一行字符. 例如:

istream &getline(char *buffer, streamsize num );
istream &getline(char *buffer, streamsize num, char delim );

getline 函數用于輸入流, 讀取字符到 buffer 中, 直到:

  • num-1 個字符已經讀入

  • 碰到一個換行標志

  • 碰到一個 EOF

  • 讀到字符 delim

注: getline 函數遇到空白字符不結束.

eof 函數

eof (End Of File) 表示文件結束. 從輸入流讀取數據如果達到文件末尾或遇到文件結束符時, eof 函數的值為非零值 (true), 否則為 0 (false)

cout 流對象

cout 是 console input 的縮寫, 意為在控制臺的輸出:

  • cout 不是 C++ 預定義的關鍵字, 它是 ostream 流類的對象, 在 iostream 中定義

  • “cout <<” 輸出基本類型的數據時, 可以不必考慮數據是什么類型,系統會判斷數據的類型, 并根據其類型選擇調用與之匹配的運算符重載函數

  • cout 流在內存中對應開辟了一個緩沖區, 用來存放流中的數據, 當向 cout 流插入一個 endl 時, 立即輸出流中所有數據, 然后插入一個換行符, 并刷新流 (清空緩沖區)

  • cout.flush(); 輸出流中所有數據, 刷新緩沖區

C/C++中I/O進階怎么用

cerr 流對象

cerr 流對象是標準錯誤流, 被指定為與顯示器關聯. cerr 的作用是想標準組錯誤設備 (standard error device) 輸出有關出錯信息.

cerr 和 cout 的區別:

  • cout 流通常是傳送到顯示器輸出, 但也可以被重新定向輸出到磁盤文件

  • cerr 流中的信息只能在顯示器輸出

cerr 的用途:

  • 當調試程序時, 往往不希望程序運行時的出錯信息被送到其他文件, 而要求在顯示器上及時輸出, 這是應該用 cerr

  • cerr 流中的信息是用戶根據需要指定的

C/C++中I/O進階怎么用

案例 (解一元二次方程):

#include <iostream>
#include <valarray>
using namespace std;

int main() {
    double a, b, c, delta;
    cout << "please input a, b, c:\n";
    cin >> a >> b >> c;

    if (a==0){
        cerr << "a is equal to zero, error!" << endl;
    }else if((delta = b*b - 4*a*c) < 0){
        cerr << "delta < 0, error" << endl;
    }else{
        cout << "x1=" << (-b + sqrt(delta)) / (2*a) << endl;
        cout << "x1=" << (-b - sqrt(delta)) / (2*a) << endl;
    }
    
    return 0;
}

輸出結果:

C/C++中I/O進階怎么用

C/C++中I/O進階怎么用

C/C++中I/O進階怎么用

clog 流對象

colg 流對象也是標準錯誤流, 它是 console log 的縮寫. clog 的作用和 cerr 相同, 都是在終端顯示器上顯示出錯誤信息.

clog 和 cerr 的區別:

  • cerr 是不經過緩沖區, 直接向顯示器上輸出有關信息

  • clog 中的信息存放在緩沖區, 緩沖區滿后或遇到 endl 時向顯示器輸出

關于“C/C++中I/O進階怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

甘南县| 洮南市| 清徐县| 承德县| 罗定市| 汉寿县| 西乡县| 上饶县| 抚远县| 西乌珠穆沁旗| 布拖县| 兴安县| 康乐县| 南郑县| 临汾市| 乌兰察布市| 平遥县| 绿春县| 开鲁县| 灵川县| 侯马市| 南陵县| 石屏县| 沁源县| 江阴市| 夏津县| 巴塘县| 台北县| 文安县| 常山县| 宜兴市| 清水河县| 永兴县| 铜梁县| 白银市| 泗水县| 鹤山市| 邹城市| 凤山县| 吉首市| 达州市|