C++ iostream、iomanip 頭文件詳解

歡迎前往我的博客網(wǎng)站:chungzh.cn

大家好,我是ChungZH!這是我的第二篇博客。在這篇博客中,我將介紹一些有關(guān)C++的iostream和iomanip庫的知識,希望大家喜歡!


首先,我們來看看iostream。
相信大家都知道iostream,這個(gè)庫可以說是最常用的幾個(gè)庫之一了。iostream庫提供了輸入輸出流。比如cin、cout,都是在iostream里的。所以,我們經(jīng)常會用到iostream這個(gè)庫。

iostream這個(gè)名字很好理解,InputOutputStream,輸入輸出流。

我們先看看iostream的代碼:

#include <bits/c++config.h>
#include <ostream>
#include <istream>

// 由于代碼過長,不再繼續(xù) 

可以看出,iostream自己又引用了istream和ostream這兩個(gè)頭文件。這兩個(gè)頭文件的名字也很好理解,input stream和output stream。

我們再來分別看看istream和ostream里面又引用了什么:

istream:

#include <ios>
#include <ostream>

ostream:

#include <ios>
#include <bits/ostream_insert.h>

這兩個(gè)頭文件都引用了ios,我們繼續(xù)看看ios的代碼:

#include <iosfwd>
#include <exception>    
#include <streambuf>

好了,就到這里吧!其實(shí)iostream還引用了很多頭文件的,我們不必深究。只知道它引用了istream、ostream和ios就行了。


iostream庫定義了以下三個(gè)標(biāo)準(zhǔn)流對象:

cin表示標(biāo)準(zhǔn)輸入(standard input)的istream類對象。cin可以從設(shè)備讀入數(shù)據(jù)。

cout表示標(biāo)準(zhǔn)輸出(standard output)的ostream類對象。cout可以向設(shè)備輸出或者寫數(shù)據(jù)。

cerr表示標(biāo)準(zhǔn)錯(cuò)誤(standard error)的ostream類對象。cerr是導(dǎo)出程序錯(cuò)誤消息的地方,它只能允許向屏幕設(shè)備寫數(shù)據(jù)。

其中,cin和cout是比較常用的。cerr相對比較少用。

這些標(biāo)準(zhǔn)的流對象都有默認(rèn)的所對應(yīng)的設(shè)備,見下表:

C++對象名 設(shè)備名稱 C中標(biāo)準(zhǔn)設(shè)備名 默認(rèn)含義
cin 鍵盤 stdin 標(biāo)準(zhǔn)輸入
cout 顯示器屏幕 stdout 標(biāo)準(zhǔn)輸出
cerr 顯示器屏幕 stderr 標(biāo)準(zhǔn)錯(cuò)誤輸出

好了,對于iostream,我們就講到這里。接下來我們將介紹iomanip。

iomanip提供了一些格式化輸入輸出流的函數(shù)。io代表輸入輸出,manip是manipulator(操縱器)的縮寫。

iomanip中比較常用的函數(shù)有以下幾個(gè):

setw(int n); 預(yù)設(shè)輸出寬度

setfill(Char c); 使用c作為填充字符

setbase(int n); 預(yù)設(shè)整數(shù)輸出進(jìn)制

setprecision(int n) 用于控制輸出流浮點(diǎn)數(shù)的精度,整數(shù)n代表顯示的浮點(diǎn)數(shù)數(shù)字的精度(使用四舍五入)。

講了那么多,還是來個(gè)示例吧:

#include <iostream>   // 標(biāo)準(zhǔn)輸入輸出流
#include <iomanip>    // 格式控制
using namespace std;
int main()
{
    double n;
    
    cin >> n;
    // 假設(shè)輸入:123.45
    
    cout << n << endl;
    // 輸出: 123.45 
    
    cout << setprecision(1) << n <<endl     // 控制精度為1,四舍五入后輸出 123.5

         << setprecision(2) << n <<endl;   // 控制精度為2,四舍五入后輸出 123.45
    
    cout << setfill('*') << setw(7) << n << endl;  // 位寬為7,由于n只有6位,所以左邊補(bǔ)充一個(gè)*,輸出    *123.45

    
    return 0;
}

好了,這篇文章就到這里。如果大家有什么疑問,可以在下方的評論區(qū)提問,我將會一一解答。

謝謝大家!


作者:ChungZH

審校:玉璇簫

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容