IO之cout格式控制

目錄

簡單了解cout是什么?

什么是字節流

默認格式控制

修改計數系統

調整字符寬度

填充字符

設置浮點數顯示精度

打印末尾的0和小數點

其他格式控制符

? ? ? ? right--->設置為右對齊,永久生效

? ? ? ? left--->設置為左對齊,永久生效

????????fixed--->固定以小數顯示浮點數,永久生效

????????scientific--->固定以科學計數法顯示浮點數,永久生效


簡單了解cout是什么?

? ? ? ? cout是ostream類的一個對象,叫做標準輸出流對象;cin是istream類的一個對象,叫做標準輸入流對象;iostream類繼承了ostream和istream;當程序包含<iostream>時,自動在命名空間std中創建對象cout和cin。

什么是字節流

? ? ? ? 字節流大概就是一個個字節組成的隊列。
????????c++的輸入輸出是面向字節流的。輸入時,程序從輸入流中取數據;輸出時,程序將數據插入到輸出流中。可以理解為c++輸入輸出的單位是單個字節。

int a = 123;
cout << a;

? ? ? ? 此處 a 是 int 類型,占4個字節,底層是32個二進制位。如果一個字節一個字節的取數據,不可能取到1 2 3這三個數,然后插入輸出流進而顯示到顯示器上。ostream類將數據的底層二進制轉化為由一個個字符字節組成的輸出流。?理解這一點很重要。

默認格式控制

  • 對于char值,如果它代表的是可打印字符,則將被作為一個字符顯示在寬度為一個字符的字段中。?
  • 對于數值整型,將以十進制方式顯示在一個剛好容納該數字及負號(如果有的話)的字段中。
  • ?字符串被顯示在寬度等于該字符串長度的字段中。
  • 浮點類型被顯示為6位,末尾的0不顯示(注意,顯示的數字位數與數字被存儲時精度沒有任何關系)。數字以定點表示法顯示還是以科學計數法表示,取決于它的值。當指數大于等于6或小于等于-5時,將使用科學計數法表示。另外,字段寬度恰好容納數字和負號(如果有的話)。
#include <iostream>int main()
{using std::cout;cout << "12345678901234567890\n";char ch = 'K';int t = 273;cout << ch << ":\n";cout << t << ":\n";cout << -t <<":\n";double f1 = 1.200;cout << f1 << ":\n";cout << (f1 + 1.0 / 9.0) << ":\n";double f2 = 1.67E2;cout << f2 << ":\n";f2 += 1.0 / 9.0;cout << f2 << ":\n";cout << (f2 * 1.0e4) << ":\n";double f3 = 2.3e-4;cout << f3 << ":\n";cout << f3 / 10 << ":\n";// std::cin.get();return 0; 
}

修改計數系統

#include <iostream>
int main()
{using namespace std;cout << "Enter an integer: ";int n;cin >> n;cout << "n     n*n\n";cout << n << "     " << n * n << " (decimal)\n";
// set to hex modecout << hex;  //以16進制輸出cout << n << "     ";cout << n * n << " (hexadecimal)\n";// set to octal modecout << oct << n << "     " << n * n << " (octal)\n";//以八進制輸出// alternative way to call a manipulatordec(cout);//以十進制輸出cout << n << "     " << n * n << " (decimal)\n";// cin.get();// cin.get();return 0; 
}

? ? ? ? 代碼說明:

  • ostream重載了<<運算符,cout<<hex等價于hex(cout)
  • hex(cout)場景下,hex看做是一個函數
  • cout << hex場景下,hex看做一個輸出控制符;這一點與flush一個道理(不了解flush的可以看如何刷新緩沖區(c++、c、linux)-CSDN博客)
  • 后續的oct、dec同樣的道理
  • 一旦使用計數控制符(hex、oct、hec)除非下次修改,否則一直處在這個狀態

調整字符寬度

? ? ? ? int width(int i):將字符寬度設置為i個空格,并返回原始默認字符寬度。需要簡單說明的是:width是iostream類的一個成員函數。注意:width()只影響下一次操作,緊接著就變為默認值。?c++中字符寬度默認值是0。在輸出時真實字符寬度,會選擇設置字符寬度與完全顯示所需字符寬度,的最大值。

#include <iostream>int main()
{using std::cout;int w = cout.width(30);cout << "default field width = " << w << ":\n";cout.width(5);cout << "N" <<':';cout.width(8);cout << "N * N" << ":\n";for (long i = 1; i <= 100; i *= 10){cout.width(5);cout << i <<':';cout.width(8);cout << i * i << ":\n";}// std::cin.get();return 0; 
}

填充字符

????????在默認情況下,cout用空格填充字段中未被使用的部分,可以用fill()成員函數來改變填充字符。cout.fill()會影響后續所有操作

#include <iostream>int main()
{using std::cout;cout.fill('*');const char * staff[2] = { "Waldo Whipsnade", "Wilmarie Wooper"};long bonus[2] = {900, 1350};for (int i = 0; i < 2; i++){cout << staff[i] << ": $";cout.width(7);cout << bonus[i] << "\n";}// std::cin.get();return 0; 
}

設置浮點數顯示精度

? ? ? ? 這里的浮點數顯示精度是指:顯示的總位數。c++默認的浮點數顯示精度為6位,末尾的0不顯示。precision()成員函數用于修改浮點數顯示精度,末尾的0同樣不顯示。永久有效

#include <iostream>int main()
{using std::cout;float price1 = 20.40;float price2 = 1.9 + 8.0 / 9.0;cout << "\"Furry Friends\" is $" << price1 << "!\n";cout << "\"Fiery Fiends\" is $" << price2 << "!\n";cout.precision(2);cout << "\"Furry Friends\" is $" << price1 << "!\n";cout << "\"Fiery Fiends\" is $" << price2 << "!\n";cout.precision(7);cout << "\"Furry Friends\" is $" << price1 << "!\n";cout << "\"Fiery Fiends\" is $" << price2 << "!\n";// std::cin.get();return 0; 
}

打印末尾的0和小數點

? ? ? ? 格式控制符:showpoint,用于顯示末尾的0和小數點,永久有效

#include <iostream>int main()
{using std::cout;// using std::ios_base;float price1 = 20.40;float price2 = 1.9 + 8.0 / 9.0;// cout.setf(ios_base::showpoint);不建議使用setfcout << showpoint;cout << "\"Furry Friends\" is $" << price1 << "!\n";cout << "\"Fiery Fiends\" is $" << price2 << "!\n";cout.precision(2);cout << "\"Furry Friends\" is $" << price1 << "!\n";cout << "\"Fiery Fiends\" is $" << price2 << "!\n";// std::cin.get();return 0; 
}

其他格式控制符

? ? ? ? right--->設置為右對齊,永久生效

? ? ? ? c++默認就是右對齊

#include <iostream>
using namespace std;
int main()
{using std::cout;int a = 1234567;int b = 1;int c = 2;cout.width(7);cout << right;cout << b << endl;cout.width(7);cout << c << endl;cout.width(7);cout << a << endl;return 0; 
}

? ? ? ? left--->設置為左對齊,永久生效

#include <iostream>
using namespace std;
int main()
{using std::cout;cout.fill('#');int a = 1234567;int b = 1;int c = 2;cout.width(7);cout << left;cout << b << endl;cout.width(7);cout << c << endl;cout.width(7);cout << a << endl;return 0; 
}

????????fixed--->固定以小數顯示浮點數,永久生效

#include <iostream>
using namespace std;
int main()
{using std::cout;cout << fixed;double a = 0.000012;double b = 12345678.9;cout << a << endl;cout << b << endl;return 0; 
}

????????scientific--->固定以科學計數法顯示浮點數,永久生效

#include <iostream>
using namespace std;
int main()
{using std::cout;double a = 0.12;double b = 12.9;cout << a << endl;cout << b << endl;cout << scientific;cout << a << endl;cout << b << endl;return 0; 
}

? ? ? ? 其它格式控制符不再贅述。

? ? ? ? 大家很明顯感受到,用格式控制符來進行格式化輸出,更舒服一點。在前面的介紹中,cout.width()、cout.precision()、cout.fill()都是使用cout對象的成員函數來進行格式化輸出。在<iomanip>中為它們三個分別設置了相應的控制符。

<iomanip>

  • setprecision()用于控制浮點數顯示精度,永久有效
  • setfill()用于控制填充字符,永久有效
  • setw()用于控制字符寬度,只生效一次
#include <iostream>
#include <iomanip>
#include <cmath>int main()
{using namespace std;// use new standard manipulatorscout << fixed << right;// use iomanip manipulatorscout << setw(6) << "N" << setw(14) << "square root"<< setw(15) << "fourth root\n";double root;for (int n = 10; n <=100; n += 10){root = sqrt(double(n));cout << setw(6) << setfill('.') << n << setfill(' ')<< setw(12) << setprecision(3) << root<< setw(14) << setprecision(4) << sqrt(root)<< endl;}// std::cin.get();return 0; 
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84805.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84805.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84805.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

探索鑄鐵試驗平臺在制造行業的卓越價值

鑄鐵試驗平臺在制造行業中具有重要的價值和作用。以下是鑄鐵試驗平臺在制造行業中的卓越價值&#xff1a; 提高產品質量&#xff1a;鑄鐵試驗平臺可以模擬各種生產條件和環境&#xff0c;并對鑄鐵產品進行精確的測試和評估。通過實驗平臺的測試&#xff0c;可以發現產品在不同條…

gpt3大模型蒸餾后效果會變差么

模型蒸餾&#xff08;Model Distillation&#xff09;是將復雜的 “教師模型”&#xff08;如 GPT-3&#xff09;的知識遷移到更輕量級的 “學生模型” 上的技術。蒸餾后的模型效果是否會變差&#xff0c;取決于多種因素&#xff0c;不能一概而論。以下是詳細分析&#xff1a; …

SQL進階之旅 Day 30:SQL性能調優實戰案例

【SQL進階之旅 Day 30】SQL性能調優實戰案例 文章簡述&#xff1a; 在數據庫系統中&#xff0c;SQL查詢的性能直接影響到整個應用的響應速度和用戶體驗。本文作為“SQL進階之旅”系列的第30天&#xff0c;聚焦于SQL性能調優實戰案例&#xff0c;通過多個真實業務場景中的SQL優…

【61 Pandas+Pyecharts | 基于Apriori算法及帕累托算法的超市銷售數據分析可視化】

文章目錄 &#x1f3f3;??&#x1f308; 1. 導入模塊&#x1f3f3;??&#x1f308; 2. Pandas數據處理2.1 讀取數據2.2 數據信息2.3 數據去重2.4 訂單日期處理提取年份2.5 產品名稱處理 &#x1f3f3;??&#x1f308; 3. Pyecharts數據可視化3.1 每年銷售額和利潤分布3.2…

每日算法刷題Day31 6.14:leetcode二分答案2道題,結束二分答案,開始枚舉技巧,用時1h10min

7. 1439.有序矩陣中的第K個最小數組和(困難,學習轉化為373) 1439. 有序矩陣中的第 k 個最小數組和 - 力扣&#xff08;LeetCode&#xff09; 思想 1.給你一個 m * n 的矩陣 mat&#xff0c;以及一個整數 k &#xff0c;矩陣中的每一行都以非遞減的順序排列。 你可以從每一行…

springMVC-13 文件下載及上傳

文件下載-ResponseEntity<T> 說明 在SpringMVC中&#xff0c;通過返回ResponseEntity<T>的類型&#xff0c;可以實現文件下載的功能 核心代碼&#xff1a;就是設置HttpHeader 文件下載響應頭的設置 content-type 指示響應內容的格式 content…

數據庫學習筆記(十六)--控住流程與游標

前言&#xff1a; 學習和使用數據庫可以說是程序員必須具備能力&#xff0c;這里將更新關于MYSQL的使用講解&#xff0c;大概應該會更新30篇&#xff0c;涵蓋入門、進階、高級(一些原理分析);這一篇和上一篇差不多&#xff0c;當做擴展&#xff0c;用到的時候再查即可(畢竟數據…

《Origin畫百圖》之核密度圖

核密度圖&#xff08;Kernel Density Plot&#xff09; 是一種用于展示數據分布形態的可視化工具&#xff0c;它通過平滑的曲線來估計數據的概率密度函數&#xff0c;相比直方圖能更細膩地呈現數據的分布特征。 具體步驟&#xff1a; &#xff08;1&#xff09;選中數據&#…

使用Apache POI操作Word文檔:從入門到實戰

Apache POI是Java生態中最流行的Microsoft Office文檔操作庫之一&#xff0c;它為Word文檔&#xff08;包括傳統的.doc格式和現代的.docx格式&#xff09;提供了全面的API支持。本文將詳細介紹如何使用Apache POI創建、讀取和修改Word文檔。 一、Apache POI簡介與環境準備 1.…

CentOS 7.3環境中部署Kerberos集群

CentOS 7.3環境中部署Kerberos集群 文章目錄 CentOS 7.3環境中部署Kerberos集群環境安裝服務包 Kerberos MS 規劃安裝 KDC Master Server配置文件/etc/krb5.conf/var/kerberos/krb5kdc/kdc.conf/var/kerberos/krb5kdc/kadm5.acl 創建Kerberos數據庫啟動與停止服務創建管理員創建…

1 Studying《Arm A715 Software Optimization Guide》

目錄 1 Introduction 1.1 Product revision status 1.2 Intended audience 1.3 Scope 1.4 Conventions 1.5 Useful resources 2 Overview 2.1 Pipeline overview 3 Instruction characteristics 3.1 Instruction tables 3.2 Legend for reading the utilized pipeli…

第二十四章 24.QoS(CCNA)

第二十四章 24.QoS(CCNA) 介紹了switch QoS的配置方法 注釋&#xff1a; 學習資源是B站的CCNA by Sean_Ning CCNA 最新CCNA 200-301 視頻教程(含免費實驗環境&#xff09; PS&#xff1a;喜歡的可以去買下他的課程&#xff0c;不貴&#xff0c;講的很細 To be continued……

什么是穩定幣?

穩定幣&#xff08;Stablecoin&#xff09;是一種特殊的加密貨幣&#xff0c;其核心目標是維持價格穩定&#xff0c;通常與某種穩定資產&#xff08;如美元、黃金等&#xff09;掛鉤。 一、為什么需要穩定幣&#xff1f; 普通加密貨幣&#xff08;如比特幣、以太坊&#xff09…

伺服學習(IS620N)

DI 端子的基本概念 DI 端子是伺服驅動器上的數字輸入接口&#xff0c;用于接收外部開關、按鈕或PLC的24V/0V信號。每個端子的功能可通過參數靈活配置&#xff08;如啟停、限位等&#xff09;。 核心要點 功能設置&#xff1a;通過驅動器參數組&#xff08;如H03&#xff09;…

基于Python的氣象數據分析及可視化研究

目錄 一.&#x1f981;前言二.&#x1f981;開源代碼與組件使用情況說明三.&#x1f981;核心功能1. ?算法設計2. ?PyEcharts庫3. ?Flask框架4. ?爬蟲5. ?部署項目 四.&#x1f981;演示效果1. 管理員模塊1.1 用戶管理 2. 用戶模塊2.1 登錄系統2.2 查看實時數據2.3 查看天…

Excel處理控件Aspose.Cells教程:使用 C# 在 Excel 中應用數據驗證

Excel 中的數據驗證可確保用戶在工作表中僅輸入有效數據。在設計表單、收集數據或構建財務模型時&#xff0c;數據驗證有助于維護結構并最大限度地減少用戶錯誤。在本文中&#xff0c;我們將向您展示如何使用 C# 以編程方式在 Excel 中應用數據驗證。 Aspose.Cells 最新版下載…

AI應用:計算機視覺相關技術總結

計算機視覺概述 計算機視覺&#xff08;Computer Vision, CV&#xff09;是一門讓計算機從圖像或視頻中 “理解” 和 “解釋” 視覺信息的技術&#xff0c;涉及多學科交叉&#xff08;如數學、統計學、機器學習、信號處理等&#xff09;。以下從技術體系、核心任務、關鍵技術、…

人口販賣暑期威脅消解:算法協同提升安全預警

隨著暑期的到來&#xff0c;人員流動加劇&#xff0c;人口販賣等惡性犯罪活動進入高發階段&#xff0c;景區、車站、商場等公共場所成為潛在風險區域。傳統安防手段在應對此類隱蔽性強、危害性大的犯罪時顯得力不從心。為此&#xff0c;引入基于視覺分析的多維度算法技術&#…

【DSP筆記 · 第3章】數字世界的“棱鏡”:離散傅里葉變換(DFT)完全解析

數字世界的“棱鏡”&#xff1a;離散傅里葉變換&#xff08;DFT&#xff09;完全解析 在上一章&#xff0c;我們探索了Z變換和離散時間傅里葉變換&#xff08;DTFT&#xff09;。我們知道&#xff0c;DTFT是一個無比強大的理論工具&#xff0c;它能將一個時域離散序列的“基因…

卷積神經網絡的參數量及尺度變化計算

文章目錄 前言1.卷積2.參數量的計算2.1案例一2.2案例二 3.奇怪的優化思想3.1使用小核卷積替換大核卷積3.2卷積核11的應用 4.輸出圖像尺寸的計算4.1Same convolution4.2具體計算規則4.3轉置卷積 小結 前言 本篇博客主要介紹卷積基本概念&#xff0c;卷積神經網絡的參數量計算、…