CString.Format 用法

Format 指定輸出格式,後面跟要輸出的變量  
    目前 printf 支持以下格式:  
       %c                 單個字符  
       %d                 十進制整數  
       %f                 十進制浮點數  
       %o                 八進制數  
       %s                 字符串  
       %u                 無符號十進制數  
       %x                 十六進制數  
       %%                 輸出百分號%  


 一個格式說明可以帶有幾個修飾符,用來指定顯示寬度,小數尾數及左對齊等:  
       -                   左對齊  
       +                   在一個帶符號數前加'+'或'-'號  
       0                   域寬用前導零來填充,而不是用空白符  

    域寬是一個整數,設置了打印一個格式化字符串的最小域。精度使用小數點後加數字表示的,給出每個轉換說明符所要輸出的字符個數。  
    注意:帶修飾符的顯示可能不正常。 

    數據格式說明由“%”開頭,形式爲   %<數據輸出寬度說明><格式符>,數據格式說明用在需要輸出變量或運算數值結果的時候,它的個數與輸出表列的個數一一對應。  
   
     數據寬度說明中如果實際數據小於寬度,則根據寬度是否大於零而左補空格或右補空格。如果實際數據大於寬度,按實際位數輸出。如果缺省寬度說明,則按實際寬度輸出。  

  CString.format('%10f', a);  
  10表示把a以10個字符寬度格式化  
  %f形式輸出,則小數部分爲6位;  
  例  
  %10f   若a的整數部分位數+小數點(1位)+小數部分位數大於等於10,則按實際a的形式格式化; 
         若a的整數部分位數+小數點(1位)+小數部分位數小於10,則在前面補空格,補足10位; 
  例  
  %.7f   則  
        a的小數部分位數若大於7,則截取7位小數,整數部分不變; 
        a的小數部分位數若小於等於7,則不滿7位的部分後面以0補足; 
   
  str.Format(_T('Left-justified integer: %.6d/n'), b);  
  %.6d  
  若整數b不滿6位則在最高爲前面補0;
  若整數b大於等於6位則形式不變;
   
  %6d  
  若整數b不滿6位,則在最高位前面補上空格,是之格式化爲6個字符寬度; 
  若整數b大於等於6位則形式不變。

 

 

 

附:printf

int printf(const char *format,[argument]);

  format 參數輸出的格式,定義格式爲:

  %[flags][width][.perc] [F|N|h|l]type

  規定數據輸出方式,具體如下:

  1.type 含義如下:

  d 有符號10進制整數

  i 有符號10進制整數

  o 有符號8進制整數

  u 無符號10進制整數

  X/x 有符號16進制整數

  F/f 浮點數

  E/e 用科學表示格式的浮點數

  g 使用%f和%e表示中的較精確者來表示浮點數 G 同g格式,但表示爲指數

  c 單個字符

  s 字符串

  % 顯示百分號本身

  p 顯示一個指針,near指針表示爲:XXXX

  far 指針表示爲:XXXX:YYYY

  n 相連參量應是一個指針,其中存放已寫字符的個數

  2.flags 規定輸出格式,取值和含義如下:

  無 右對齊,左邊填充0和空格

  + 左對齊,右邊填充空格

  - 在數字前增加符號 + 或 -

  一個空格 只對負數顯示符號

  # 當type=c,s,d,i,u時沒有影響

  type=o,x,X時,在數值前增加'0'字符

  type=e,E,f時,總是使用小數點

  type=g,G時,除了數值爲0外總是顯示小數點 3.width 用於控制顯示數值的寬度,取值和含義如下n(n=1,2,3...) 寬度至少爲n位,不夠以空格填充

  0n(n=1,2,3...) 寬度至少爲n位,不夠左邊以0填充 * 格

  式列表中,下一個參數還是width 4.prec 用於控制小數點後面的位數,取值和含義如下:

  無 按缺省精度顯示

  0 當type=d,i,o,u,x時,沒有影響

  type=e,E,f時,不顯示小數點

  n(n=1,2,3...) 當type=e,E,f時表示的最大小數位數

  type=其他,表示顯示的最大寬度 .*

  格式列表中,下一個參數還是width

  5.F|N|h|l 表示指針是否是遠指針或整數是否是長整數

  F 遠指針

  n 近指針

  h短整數或單精度浮點數

  l 長整數或雙精度浮點數

  1.一般格式

  printf(格式控制,輸出表列)

  例如:printf("i=%d,ch=%c/n",i,ch);

  說明:

  (1)“格式控制”是用雙撇號括起來的字符串,也稱“轉換控制字符串”,它包括兩種信息:

  ①格式說明:由“%”和格式字符組成,它的作用是將輸出的數據轉換爲指定的格式輸出。

  ②普通字符,即需要原樣輸出的字符。

  (2)“輸出表列”是需要輸出的一些數據,可以是表達式

  (3)printf函數的一般形式可以表示爲

  printf(參數1,參數2,……,參數n)

  功能是將參數2~參數n按參數1給定的格式輸出

  2.格式字符(9種)

  (1)d(或i)格式符。用來輸出十進制整數,有以下幾種用法:

  ①%d,按整型數據的實際長度輸出。

  ②%md,m爲指定的輸出字段的寬度。如果數據的位數小於m,則左端補以空格,若大於m,則按實際位數輸出。

  ③%ld(%mld 也可),輸出長整型數據。

  例如:long a=123456;

  printf("%ld",a);

  (2)o格式符,以八進制數形式輸出整數。格式:%o,%mo,%lo,%mlo都可。

  (3)x(或X)格式符,以十六進制數形式輸出整數。格式:%x,%mx,%lx,%mlx都可。

  (4)u格式符,用來輸出unsigned型數據,即無符號數,以十進制數形式輸出。格式:%u,%mu,%lu都可。

  參見:li4-3.c/*無符號數據的輸出*/

  (5)c格式符,用來輸出一個字符。格式:%c,%mc都可。

  (6)s格式符,用來輸出一個字符串。格式:%s,%ms,%-ms,%m.ns,%-m.ns都可。

  參見:li4-5.c /*字符串的輸出*/

  (7)f格式符,用來輸出實數(包括單、雙精度),以小數形式輸出。格式:%f,%m.nf,%-m.nf都可。

  注意:單精度實數的有效位數一般爲7位,雙精度爲16位。

  參見:li4-6.c/*輸出單精度實數時的有效位數*/

  li4-7.c/*輸出雙精度實數時的有效位數*/

  li4-8.c/*輸出實數時指定小數位數*/

  (8)e(或E)格式符,以指數形式輸出實數。格式:%e,%m.ne,%-m.ne都可。

  (9)g(或G)格式符,用來輸出實數,它根據數值的大小,自動選f格式或e格式(選擇輸出時佔寬度較小的一種)。

  3.說明

  (1)除了X、E、G(用大寫字母表示)外,其他格式字符必須用小寫字母;

  (2)“格式控制”字符串內可以包含轉義字符;

  (3)如果想輸出字符“%”,則應該在“格式控制”字符串中用連續兩個%表示,如:

  printf("%f%%",1.0/3);

  (4)格式字符表參見下表

  表4.1 printf格式字符

  格式字符 說 明

  d,i 以帶符號的十進制形式輸出整數(正數不輸出符號)

  o 以八進制無符號形式輸出整數(不輸出前導符0)

  x,X 以十六進制無符號形式輸出整數(不輸出前導符0x),用x則輸出十六進制數的a~f時以小寫形式輸出,用X時,則以大寫字母輸出

  u 以無符號十進制形式輸出整數

  c 以字符形式輸出,只輸出一個字符

  s 輸出字符串

  f 以小數形式輸出單、雙精度數,隱含輸出6位小數

  e,E 以指數形式輸出實數

  g,G 選用%f或%e格式中輸出寬度較短的一種格式,不輸出無意義的0

  表4.2 printf的附加格式說明字符

  字符

  說明

  字母l

  用於長整型整數,可加在格式符d、o、x、u前面

  m(代表一個正整數)

  數據最小寬度

  n(代表一個正整數)

  對實數,表示輸出n位小數;對字符串,表示截取的字符個數

  -

  輸出的數字或字符在域內向左靠

 

發佈了2 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章