C 零碎知識 輸出格式化

2021-09-26 01:52:02 字數 2216 閱讀 2753

利用cout進行輸出格式化,cout為ostream類,格式化方式是將值轉化為文字方式輸出。包括整型、字元、字串、浮點型。

通過控制符可以修改類成員的值,修改輸出的格式。(輸出格式不會影響輸入內容)

通用的文字是文字寬度成員函式width(),填充字元成員函式fill(),靠左靠右顯示成員函式setf(ios_base::left,ios_base::adjustfield)

控制整數以十進位制、八進位制、十六進製制顯示,控制符為dec、hex、oct。

使用方式有兩種,一過載插入運算子<

cout該設定影響後面所有的數,一直有效。

大都採用成員函式

cout.width();

cout.fill('*');

字段寬度預設為,width()方法可以有引數也可以沒有引數,都返回原來設定的資源寬度;另外,該方法只影響接下來顯示的專案,然後字段寬度就會恢復預設值。

預設值為0還顯示資料的原因是:c++不會截短資料,顯示所有資料遠比保持整潔重要,c++會擴寬欄位與資料長度匹配。

fill()一直有效

預設為靠右顯示。

浮點數點數有三種表示方法預設表示方法、定點表示方法、科學表示法

在printf中分別對應說明符「%g」、"%f"、"%e";

明顯浮點數的顯示方式,還影響的顯示精度的顯示方式、以及末位0的保留方式;預設情況下是顯示6位數,末位0不顯示。(注意這裡是6位數不是6位小數)。

可以看書浮點數的顯示方式,影響成員函式pricision()的含義

並且定點和浮點在有小數的情況下可以達到cout.setf(ios_base::showpoint);的效果

注意以上效果是針對浮點數的不要搞個整數也顯示0和小數點,不行。要寫成cout<<1.0的形式。

setf()作為iso_base的類函式,被ostream類繼承;

有兩個函式原型:

fmtflags setf(fmtflags);

fmtflags setf(fmtflags,fmtflags);

(fmtflags(formatflags)是bitmask型別的typedef,在ios_base中定義,所以要加作用域限定符);

這上面兩個都是一直作用的,可以用old保留下來手動還原。

ios_base::fmtflags old = cout.setf();
對應的unsetf()函式是關閉相應的狀態,只需要乙個引數。

fmtflags setf(fmtflags);
前面的showpoint符號常量是第一種函式的引數;

類似的還有

ios_base::boolalpha//輸入和輸出bool值,顯示true或false

ios_base::showbase//輸出基數字首0/0x

ios_base::showpoint//顯示省略的0和小數點

ios_base::showpos//顯示+

ios_base::uppercase//十六進製制使用大寫字母表示

bool顯示的前提是要將輸入識別為bool型別,cin也一樣。第二個引數是清空對應位,第乙個引數是設定對應位

第二個引數有 basefield,floatfield,adjustfield

對應的第乙個引數有 dec,hex,oct,fixed,scientific,left,right,inter。

可以用控制符呼叫setf函式、unsetf()函式;

cout<<<

C 輸入輸出格式,及其他零碎知識的整合

關於c 輸入輸出格式 以及其他容易忘記的知識的整合。首先是題目 輸入一串大寫字母串 包括空格 輸出的sum是每個英文本母在字母表中的位置及字串的位置的乘積之和 空格為0 舉例 acm 1 1 2 3 3 13 46 mid central 1 13 2 9 3 4 4 0 5 3 6 5 7 14 ...

C 輸出格式化

今天看書,看到了格式輸出部分,記下來吧,省得以後找不到,呵呵。在控制台程式中,可以在write 和 writeline 方法中使用格式控制字串來修飾資料輸出格式,呼叫形式如下 console.writeline 格式控制字串 輸出資料項列表 在windows窗體應用程式中,可以通過string類的靜...

零碎知識C

c 中 dec,hex,oct,fixed,scientific,left,right,ws,setfill,setw,setprecision,eof,get,getline都是什麼意思 dec是十進位制 如cout這些是格式控制符 在使用時要加標頭檔案 include fixed是固定的意思 p...