最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++?的cout格式化輸出場景示例詳解

 更新時間:2023年09月25日 14:34:23   作者:向陽逐夢  
這篇文章主要為大家介紹了C++的cout格式化輸出場景示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

在某些實際場景中,我們經(jīng)常需要按照一定的格式輸出數(shù)據(jù),比如輸出浮點數(shù)時保留 2 位小數(shù),再比如以十六進制的形式輸出整數(shù),等等。

對于學(xué)過 C 語言的讀者應(yīng)該知道,當使用 printf() 函數(shù)輸出數(shù)據(jù)時,可以通過設(shè)定一些合理的格式控制符,來達到以指定格式輸出數(shù)據(jù)的目的。例如 %.2f 表示輸出浮點數(shù)時保留 2 位小數(shù),%#X 表示以十六進制、帶 0X 前綴的方式輸出整數(shù)。

關(guān)于 printf() 函數(shù)支持的格式控制符,更詳細的講解,可閱讀《C語言數(shù)據(jù)輸出大匯總》一節(jié),這里不做詳細贅述。

C++ 通常使用 cout 輸出數(shù)據(jù),和 printf() 函數(shù)相比,cout 實現(xiàn)格式化輸出數(shù)據(jù)的方式更加多樣化。一方面,cout 作為 ostream 類的對象,該類中提供有一些成員方法,可實現(xiàn)對輸出數(shù)據(jù)的格式化;另一方面,為了方面用戶格式化輸出數(shù)據(jù),C++ 標準庫專門提供了一個 <iomanip> 頭文件,該頭文件中包含有大量的格式控制符(嚴格意義上稱為“流操縱算子”),使用更加方便。

C++ cout成員方法格式化輸出

《C++輸入流和輸出流》一節(jié)中,已經(jīng)針對 cout 講解了一些常用成員方法的用法。除此之外,ostream 類中還包含一些可實現(xiàn)格式化輸出的成員方法,這些成員方法都是從 ios 基類(以及 ios_base  類)中繼承來的,cout(以及 cerr、clog)也能調(diào)用。

表 1 羅列了 ostream 類中可實現(xiàn)格式化輸出的常用成員方法,以及它們各自的用法。

其中,對于表 1 中 flags() 函數(shù)的 fmtfl 參數(shù)、setf() 函數(shù)中的 fmtfl 參數(shù)和 mask 參數(shù)以及 unsetf() 函數(shù) mask 參數(shù),可以選擇表 2 中列出的這些值。

舉個例子:

    #include <iostream>
    using namespace std;
    int main()
    {
        double a = 1.23;
        //設(shè)定后續(xù)輸出的浮點數(shù)的精度為 4
        cout.precision(4);
        cout <<"precision: "<< a << endl;
        //設(shè)定后續(xù)以科學(xué)計數(shù)法的方式輸出浮點數(shù)
        cout.setf(ios::scientific);
        cout <<"scientific:"<< a << endl;
        return 0;
    }

程序執(zhí)行結(jié)果為:

precision: 1.23

scientific:1.2300e+00

注意,當 cout 采用此方式進行格式化輸出時,其后不能立即輸出數(shù)據(jù),而只能像示例程序中那樣,再用一個 cout 輸出數(shù)據(jù)。

值得一提的是,當調(diào)用 unsetf() 或者 2 個參數(shù)的 setf() 函數(shù)時,為了提高編寫代碼的效率,可以給 mask 參數(shù)傳遞如下 3 個組合格式:

  • ios::adjustfield:等價于 ios::left | ios::right | ios::internal;

  • ios::basefield:等價于 ios::dec | ios::oct | ios::hex;

  • ios::floatfield:等價于 ios::scientific | ios::fixed。

舉個例子:

    #include <iostream>
    using namespace std;
    int main()
    {
        double f = 123;
        //設(shè)定后續(xù)以科學(xué)計數(shù)法表示浮點數(shù)
        cout.setf(ios::scientific);
        cout << f << '\n';
        //刪除之前有關(guān)浮點表示的設(shè)定
        cout.unsetf(ios::floatfield);
        cout << f;
        return 0;
    }

程序執(zhí)行結(jié)果為:

1.230000e+02

123

使用流操縱算子格式化輸出

表 3 羅列了 <iomanip> 頭文件中定義的一些常用的格式控制符,它們都可用于格式化輸出。

 注意:“流操縱算子”一欄帶有星號 * 的格式控制符,默認情況下就會使用。例如在默認情況下,整數(shù)是用十進制形式輸出的,等效于使用了 dec 格式控制符。

和 cout 成員方法的用法不同,下面程序演示了表 3 中這些格式控制符的用法:

    #include <iostream>
    #include <iomanip>
    using namespace std;
    int main()
    {
        //以十六進制輸出整數(shù)
        cout << hex << 16 << endl;
        //刪除之前設(shè)定的進制格式,以默認的 10 進制輸出整數(shù)
        cout << resetiosflags(ios::basefield)<< 16 << endl;
        double a = 123;
        //以科學(xué)計數(shù)法的方式輸出浮點數(shù)
        cout << scientific << a << endl;
        //刪除之前設(shè)定的科學(xué)計數(shù)法的方法
        cout << resetiosflags(ios::scientific) << a << endl;
        return 0;
    }

程序執(zhí)行結(jié)果為:

10
16
1.230000e+02
123

注意,如果兩個相互矛盾的標志同時被設(shè)置,如先設(shè)置 setiosflags(ios::fixed),然后又設(shè)置 setiosflags(ios::scientific),那么結(jié)果可能就是兩個標志都不起作用。因此,在設(shè)置了某標志,又要設(shè)置其他與之矛盾的標志時,就應(yīng)該用 resetiosflags 清除原先的標志。

以上就是C++ 的cout格式化輸出的詳細內(nèi)容,更多關(guān)于C++ 的cout格式化輸出的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++使用一個棧實現(xiàn)另一個棧的排序算法示例

    C++使用一個棧實現(xiàn)另一個棧的排序算法示例

    這篇文章主要介紹了C++使用一個棧實現(xiàn)另一個棧的排序算法,結(jié)合實例形式分析了C++借助輔助棧實現(xiàn)棧排序算法的相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • C語言利用system調(diào)用系統(tǒng)命令行詳情

    C語言利用system調(diào)用系統(tǒng)命令行詳情

    這篇文章主要介紹了C語言利用system調(diào)用系統(tǒng)命令行詳情,system就是調(diào)用系統(tǒng)命令行,輸入為字符串,然后把這個字符串輸出給命令行,讓命令行執(zhí)行。下文的具體內(nèi)容,需要的小伙伴可以參考一下
    2022-01-01
  • Qt實現(xiàn)Slider滑塊條組件的示例代碼

    Qt實現(xiàn)Slider滑塊條組件的示例代碼

    在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,本文主要介紹了Qt實現(xiàn)Slider滑塊條組件的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • C或C++報錯:ld returned 1 exit status報錯的原因及解決方法

    C或C++報錯:ld returned 1 exit status報錯的原因及解

    這篇文章主要介紹了C或C++報錯:ld returned 1 exit status報錯的原因及解決方法,本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • C語言算法金手指摩爾投票法手撕絕大多數(shù)問題

    C語言算法金手指摩爾投票法手撕絕大多數(shù)問題

    這篇文章主要為大家介紹了C語言算法之金手指摩爾投票法手撕絕大多數(shù)問題的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • 基于Matlab LBP實現(xiàn)植物葉片識別功能

    基于Matlab LBP實現(xiàn)植物葉片識別功能

    局部二值模式(LBP)是由Ojala等人于2002年提出,它被用于特征提取,而且提取的特征是圖像的紋理特征。本文將利用Matlab和LBP實現(xiàn)植物葉片識別,需要的可以參考一下
    2022-02-02
  • 詳解C/C++中的select、poll和epoll

    詳解C/C++中的select、poll和epoll

    本文通過示例介紹了C/C++中的select、poll和epoll知識,結(jié)合示例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2023-06-06
  • C++如何采用Daemon進行后臺程序的部署

    C++如何采用Daemon進行后臺程序的部署

    這篇文章主要介紹了C++采用Daemon進行后臺程序的部署,本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • LintCode 堆化詳解及實例代碼

    LintCode 堆化詳解及實例代碼

    這篇文章主要介紹了LintCode 堆化詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • QT實現(xiàn)QML側(cè)邊導(dǎo)航欄的最簡方法

    QT實現(xiàn)QML側(cè)邊導(dǎo)航欄的最簡方法

    本文主要介紹了QT實現(xiàn)QML側(cè)邊導(dǎo)航欄的最簡方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2022-06-06

最新評論

定南县| 柏乡县| 日喀则市| 兖州市| 固始县| 马尔康县| 米脂县| 德钦县| 临洮县| 泸定县| 武功县| 丹巴县| 蓬莱市| 汤原县| 望都县| 千阳县| 海丰县| 蓬溪县| 闽侯县| 黑河市| 迭部县| 平果县| 富裕县| 大关县| 滁州市| 内丘县| 旬邑县| 当涂县| 谢通门县| 额济纳旗| 游戏| 勐海县| 淳安县| 墨脱县| 浦东新区| 龙胜| 偃师市| 兴和县| 营山县| 汪清县| 旬邑县|