C++輸入輸出格式控制
1、數的進位制
預設進位制:
預設狀態下,資料按十進位制輸入輸出。如果要求按八進位制或十六進位制輸入輸出,在cin或cout中必須指明相應的資料形式,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中指明數制,否則從鍵盤輸入時,不認八進位制和十六進位制數開頭的0和0x標誌。指明後可省略0和0x標誌。
進位制控制只適用於整型變數,不適用於實型和字元型變數。
輸入資料的格式、個數和型別必須與cin中的變數一一對應,否則不僅使輸入資料錯誤,而且影響後面其他資料的正確輸入。
在cin或cout中指明數制後,該數制將一直有效,直到重新指明使用其他數制。
2、資料間隔
常用設定方法:輸出空格符或回車換行符。
指定資料輸出寬度:用
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個輸出設定了有效位數0,C++最小的有效位數為1,所以作為有效位數設定為1來看待:第3~6行輸出按設定的有效位數輸出。
在用定點表示的輸出中,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 設定整數的基數為8
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 設定整數的基數為8
ios::hex 設定整數的基數為16
ios::showbase 強制輸出整數的基數(八進位制以0打頭,十六進位制以0x打頭)
ios::showpoint 強制輸出浮點數的小點和尾數0
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)“格式控制”是用雙撇號括起來的字符串,也稱“轉換控
C,C++輸入輸出
函數功能 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 用定點符號表示浮點