1. 程式人生 > >C++輸入輸出格式控制

C++輸入輸出格式控制

1、數的進位制

預設進位制:

預設狀態下,資料按十進位制輸入輸出。如果要求按八進位制或十六進位制輸入輸出,在cincout中必須指明相應的資料形式,oct為八進位制,hex為十六進位制,dec為十進位制。

int i, j, k, l;

cout<<”Input i(oct), j(hex), k(hex), l(dec):”<<endl;

cin>>oct>>i; //輸入為八進位制數

cin>>hex>>j; //輸入為十六進位制數

cin>>k; //輸入仍為十六進位制數

cin>>dec>>l; //輸入為十進位制數

cout<<”hex:”<<”i=”<<hex<<i<<endl;

cout<<dec:<<j=<<dec<<j<<\t<<k=<<k<<endl;

cout<<”oct:”<<”l=”<<oct<<l;

cout<<dec<<endl; //恢復十進位制輸出狀態

【執行結果】:

1)輸出提示:Input i(oct), j(hex), k(hex), l(dec):

2)此時從鍵盤輸入: 032 0x3f 0xa0 17 <CR>

3)輸出結果為:

hex:i=1a

dec:j=63 k=160

oct:l=21

幾點說明:
使用不帶.h的標頭檔案<iostream>時,必須在cin中指明數制,否則從鍵盤輸入時,不認八進位制和十六進位制數開頭的00x標誌。指明後可省略00x標誌。
進位制控制只適用於整型變數,不適用於實型和字元型變數。
輸入資料的格式、個數和型別必須與cin中的變數一一對應,否則不僅使輸入資料錯誤,而且影響後面其他資料的正確輸入。
cincout中指明數制後,該數制將一直有效,直到重新指明使用其他數制。
2、資料間隔
常用設定方法:輸出空格符或回車換行符。
指定資料輸出寬度:用

C++提供的函式setw()指定輸出資料項的寬度。setw()括號中通常給出一個正整數值,用於限定緊跟其後的一個數據項的輸出寬度。如:setw(8)表示緊跟其後的資料項的輸出佔8個字元寬度。

int i=2, j=3;

float x=2.6, y=1.8;

cout<<setw(6)<<i<<setw(10)<<j<<endl;

cout<<setw(10)<<i*j<<endl;

cout<<setw(8)<<x<<setw(8)<<y<<endl;

則輸出結果為:

2 3

6

2.6 1.8

setw()只能限定緊隨其後的一個數據項,輸出後即回到預設輸出方式。

使用setw()必須在程式開頭再增加一句: #include<iomanip>

#include <iostream>   //不要用iostream.h ,會出現好多問題

#include <iomanip>    // io 流控制標頭檔案, 主要是一些操縱用法如setw(int n),setprecision(int n) ,setbase(int   n),setfill(char c).

   ▲setw(n)用法: 通俗地講就是預設寬度
   cout<<setw(5)<<255<<endl;
   結果是:
   (空格)(空格)255
   ▲setfill(char c) 用法 : 就是在預設寬度中如果已存在沒用完的寬度大小,則用設定的字元c填充
   cout<<setfill('@')<<setw(5)<<255<<endl;
   結果是:
   @@255
   ▲setbase(int n) : 將數字轉換為 n 進位制.
   cout<<setbase(8)<<setw(5)<<255<<endl;
    cout<<setbase(10)<<setw(5)<<255<<endl;
    cout<<setbase(16)<<255<<endl;
   結果是:
   (空格)(空格)377
   (空格)(空格) 255
   (空格)(空格) ff
   ▲ setprecision用法
   使用setprecision(n)可控制輸出流顯示浮點數的數字個數。C++預設的流輸出數值有效位是6
   如果setprecision(n)setiosflags(ios::fixed)合用,可以控制小數點右邊的數字個數。setiosflags(ios::fixed)是用定點方式表示實數。
   如果與setiosnags(ios::scientific)合用, 可以控制指數表示法的小數位數。setiosflags(ios::scientific)是用指數方式表示實數。
   例如,下面的程式碼分別用浮點、定點和指數方式表示一個實數:

    double amount = 22.0/7;

    cout << amount << endl;

    cout << setprecision(0) << amount << endl

           << setprecision(1) << amount << endl

           << setprecision(2) << amount << endl

           << setprecision(3) << amount << endl

           << setprecision(4) << amount << endl;

    cout << setiosflags(ios::fixed);

    cout << setprecision(8) << amount << endl;

    cout << setiosflags(ios::scientific) << amount <<endl;

    cout <<setprecision(6); //重新設定成原預設設定

   執行結果為:
   3.14286
   3
   3
   3.1
   3.14
   3.143
   3.14285714
   3.14285714e+00

   該程式在32位機器上執行通過。
   在用浮點表示的輸出中,setprecision(n)表示有效位數。
   1行輸出數值之前沒有設定有效位數,所以用流的有效位數預設設定值6:第2個輸出設定了有效位數0C++最小的有效位數為1,所以作為有效位數設定為1來看待:第36行輸出按設定的有效位數輸出。
   在用定點表示的輸出中,setprecision(n)表示小數位數。
   7行輸出是與setiosflags(ios::fixed)合用。所以setprecision(8)設定的是小數點後面的位數,而非全部數字個數。
   在用指數形式輸出時,setprecision(n)表示小數位數。
   8行輸出用setiosflags(ios::scientific)來表示指數表示的輸出形式。其有效位數沿用上次的設定值8

   setw(n)是設定域寬。
   就是你的輸出要佔多少個字元。
   比如:
   cout<<setw(5)<<12345<<endl;
   就輸出:
   12345
   cout<<setw(6)<<12345<<endl;
   輸出:
   12345
   而如果你要輸出的字元寬度超出了setw(n)n值,就按輸出字元的寬度輸出。
   如你的cout<<setw(4)<<12.3456<<endl;
   就輸出12.3456

C++cout.setf(iOS::left,ios::adjustfield); cout.setf(ios::showpoint,ios::showpint);
cout.setf(ios::scientific,ios::floatfield);
分別表示什麼

參考以下:

1.使用控制符控制輸出格式
控制符 作用 
dec 設定整數的基數為10 
hex 設定整數的基數為16 
oct 設定整數的基數為
setbase(n) 設定整數的基數為n(n只能是16,10,8之一
setfill(c) 設定填充字元c,c可以是字元常量或字元變數
setprecision(n) 設定實數的精度為n.在以一般十進位制小數形式輸出時,n代表有效數字.在以fixed(固定小數位數)形式和scientific(指數)形式輸出時,n為小數位數.
setw(n) 設定欄位寬度為n.
setiosflags(ios::fixed) 設定浮點數以固定的小數位數顯示.
setiosflags(ios::scientific) 設定浮點數以科學計數法(即指數形式)顯示.
setiosflags(ios::left) 輸出資料左對齊.
setiosflags(ios::right) 輸出資料右對齊.
setiosflags(ios::shipws) 忽略前導的空格.
setiosflags(ios::uppercase) 在以科學計數法輸出E和十六進位制輸出字母X,以大寫表示.
setiosflags(ios::showpos) 輸出正數時,給出“+”號.
resetiosflags 終止已設定的輸出格式狀態,在括號中應指定內容.
2.用流物件的成員控制輸出格式
流成員函式 與之作用相同的控制符 作用 
precision(n) setprecision(n) 設定實數的精度為n.
width(n) setw(n) 設定欄位寬度為n.
fill(c) setfill(c) 設定填充字元c.
setf( ) setiosflags( ) 設定輸出格式狀態,括號中應給出格式狀態,內容與控制符setiosflags括號中內容相同.
ubsetf( ) resetiosflags( ) 終止已設定的輸出格式狀態.
cout.width(10); 
cout.setf(ios::hex);
3.設定格式狀態的格式標誌
格式標誌 作用 
ios::left 輸出資料在本域寬範圍內左對齊
ios::right 輸出資料在本域寬範圍內右對齊
ios::internal 數值的符號位在域寬內左對齊,數值右對齊,中間由填充字元填充
ios::dec 設定整數的基數為10 
ios::oct 設定整數的基數為
ios::hex 設定整數的基數為16 
ios::showbase 強制輸出整數的基數(八進位制以0打頭,十六進位制以0x打頭
ios::showpoint 強制輸出浮點數的小點和尾數
ios::uppercase 在以科學計數法輸出E和十六進位制輸出字母X,以大寫表示
ios::showpos 輸出正數時,給出“+”號.
ios::scientific 設定浮點數以科學計數法(即指數形式)顯示
ios::fixed 設定浮點數以固定的小數位數顯示
ios::unitbuf 每次輸出後重新整理所有流
ios::stdio 每次輸出後清除stdout,stderr 

相關推薦

C++輸入輸出格式控制

1、數的進位制 預設進位制: 預設狀態下,資料按十進位制輸入輸出。如果要求按八進位制或十六進位制輸入輸出,在cin或cout中必須指明相應的資料形式,oct為八進位制,hex為十六進位制,dec為十進位制。 int i, j, k, l; cout<<”Inp

C++標準輸入輸出格式控制(進位制)

從HDU--2057題說起 剛開始做,以為這題是大數加減問題,試了半天發現太複雜,要考慮的因素太多,後來知道long long能表示16位十六進位制的整數,題目中為15位,可以直接加減,百度了一下輸入輸出十六進位制的格式,還有十六進位制的負數輸出的是其補碼,故要判斷結果

C/C++標準輸入輸出格式控制

1、c語言輸入輸出格式控制 (1)輸入格式控制–scanf() 語法: #include <stdio.h> int scanf( const char *format, ... ); scanf()函式根據由format(格式)指定的

C++ 輸入輸出格式 與 精度問題

使用printf(): int myCost_1 = 10; int myCost_2 = 234; printf("%.3f\n", myCost_1 / 100.0);//商 保留三位小數

C++輸入輸出格式控制1

》預設的輸入輸出格式         在沒有特地進行格式控制的情況下,輸入輸出採用預設格式。         >預設的輸入格式         C++流所識別的輸入資料的型別及其預設的輸入格式:               # short   、int    、lon

c語言中輸入輸出格式控制

一、輸入格式的控制 scanf函式中格式字元: (1)d,i:用來輸入有符號的十進位制中 (2) u:用來輸入無符號的十進位制整數 (3)o:用來輸入無符號的八進位制整數 (4)x,X:用來輸入無符號的十六進位制整數(大小寫作用相同) (5)c:用來輸入單個符號  (6)

C++輸入輸出常用格式(cin,cout,stringstream)

運行 例如 per .get 風格 這也 顯示 運用 控制 輸入格式   1、cin>>a; 最基本的格式,適用於各種類型。會過濾掉不可見字符例如空格,TAB,回車等   2、cin>>noskipw

C++格式化輸出C++輸出格式控制

在輸出資料時,為簡便起見,往往不指定輸出的格式,由系統根據資料的型別採取預設的格式,但有時希望資料按指定的格式輸出,如要求以十六進位制或八進位制形式輸出一個 整數,對輸出的小數只保留兩位小數等。有兩種方法可以達到此目的。一種是我們已經介紹過的使用控制符的方法(詳情請檢視:C

關於C++的輸入輸出格式%f和%lf的區別

之所以寫這個,是因為在POJ上用%lflf會爆炸.. 首先,說明下,C++C++將實數分為單精度和高精度這些花裡胡哨的東西.. printfprintf的說明符的確既可以輸出floatfl

C++輸出格式控制

http://www.cnblogs.com/leewiki/archive/2011/12/13/2286168.html  轉載與此部落格 setprecision(n)可控制輸出流顯示浮點數的數字個數。C++預設的流輸出數值有效位是6,所以不管資料是多少,都只輸

C++ 的 printf格式控制輸出

測試平臺:gcc (Ubuntu 4.8.5-4ubuntu8~16.04.1) 4.8.5 %f,預設輸出六位小數(對float和double型別都是預設輸出六位小數),有效數字只是前6位(包括整

C++輸入輸出函數用法

不可見 不想 logs 跳過 沒有 三個參數 兼容 語言 stream 註:本文修改自http://blog.csdn.net/fenxinzi557/article/details/52222290 1、cin 2、cin.get() 3、cin.getline()

C語言輸出格式總結

輸出 無符號 分享 字符串 image 輸出字符串 轉義 輸出符 連續 1 一般格式 printf(格式控制,輸出表列) 例如:printf("i=%d,ch=%c\n",i,ch); 說明: (1)“格式控制”是用雙撇號括起來的字符串,也稱“轉換控

CC++輸入輸出

函數功能 oid 輸入 缺省 char void sin 溢出 urn C語言: 1. scanf printf %c %s %d %lld scanf %s 遇見“ ”或者回車等就結束 scanf %c 可以讀取空格; 2. ge

C++輸入輸出流加速器,關閉同步流,ios::sync_with_stdio(false)和 cin.tie(0)

bsp c++ 語句 leetcode return ios 使用 而不是 關閉 leetcode練習時,總會發現運行時間短的代碼都會有類似: static int x=[](){ std::ios::sync_with_stdio(false); cin

<C++學習一>關於C++輸入輸出

cin.get 技術分享 測試結果 分享 line 遇到 關於 分享圖片 .com 本質:輸入輸出時以字節流進行抽取字節    ·cin 輸入流,遇到空白、制表等,輸入會停止。     重點把握的函數:     (1)cin.get(); //從流中讀取一個字符     (

10.3 輸入輸出控制方式

來講 假設 外賣 訪問方式 控制寄存器 個數 一次 也會 技術 計算機組成 10 輸入輸出設備 10.3 輸入輸出的控制方式 現在看來,跟外界交互也沒有那麽復雜嘛。跟以前與存儲器的交互差不了多少,我給一個地址,得到一個數;或者給一個地址,寫進去一個數,這樣就跟外設進行交互

python視覺化演算法執行進度(含輸出格式控制函式format用法)

使用PyPrind包實現演算法的進度條功能 在演算法執行過程中,使用PyPrind建立一個進度條物件,視覺化演算法的執行進度 官方地址:https://github.com/rasbt/pyprind 可以支援多種不同樣式的進度條顯示。 import pyprind import

HDU基本的輸入輸出格式題目1089-1096

HDU1089 #include<cmath> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int m

C++輸入/輸出操作符簡介

操縱符 操縱符 功能 dec 以十進位制輸入或輸出 endl 換行重新整理輸出流 fixed 用定點符號表示浮點