• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            C++分析研究  
            C++
            日歷
            <2013年11月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            1234567
            統計
            • 隨筆 - 92
            • 文章 - 4
            • 評論 - 4
            • 引用 - 0

            導航

            常用鏈接

            留言簿

            隨筆檔案

            文章檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

             

              在C語言中格式化字符串可以使用printf,但是在WINDOWS編程設計中卻行不通了,但是卻有變通的方法,那就是用 wsprintf這個函數。它的格式如下:

              int wsprintf ( LPTSTR lpOut, // 指向需要輸出的字符串的指針

              LPCTSTR lpFmt, //指向格式控制字符串的指針

              …… // 其他可選參數

              );

              wsprintf(緩沖區, 格式, 要格式化的值);

              第一個參數是字符緩沖區,后面是格式字符串,wsprintf不是將格式化結果寫到標準輸出,而是將其寫入緩沖區中,該函數返回該字符串的長度。比如我們想通過MessageBox來輸出一個整形變量的值,可以用以下代碼實現:

              char szBuffer[100];

              ing number=100;

              wsprintf(szBuffer, "%d",number);

              MessgaeBox(NULL,szBrffer,TEXT("格式化字符串"),0);

              這個函數除了將內容格式化輸出到第一個參數所提供的字符串緩沖區以外,其它功能與printf函數相同。

              wsprintf對應的字符串是寬字符型wchar_t,即一個字符占用2個字節的內存空間。托福答案

              sprintf對應的字符串是字符類型為char,即一個字符占用1個字節的內存空間。

              sprintf是用于對ASCII碼的127個字符進行操作,wsprintf是對UNICODE的多語言字符進行操作。如:

              sprintf(buffer, "ascii");

              wsprintf(buffer, L"unicode");

              wsprintf(filepath, L"%s\\%s", folder_name, find_data.cFileName);

              wsprintf函數能夠將一組字符序列按lpFmt參數指定的格式轉換,然后保存在lpOut參數指定的字符緩沖區中等待輸出。其中,字符序列由可選參數決定,而可選參數的數目和具體內容應該與lpFmt所指定的格式一致。

              如果wsprintf函數操作成功,則返回輸出字符的數目,但這個字符數目不包括表示結束的NULL標志。如果操作失敗,返回的整數值將與輸出的字符數目不相符。

              BOOL TextOut( HDC hdc, // 設備描述表句柄 www.sd-gw.com

              int nXStart, // 文本輸出起始點 X坐標

              int nYStart, // 文本輸出起始點 Y坐標

              LPCTSTR lpString, // 指向輸出字符串的指針

              int cbString // 字符串中字符的數目

              );

              TextOut函數能夠用當前設定的字體在窗口的指定部位輸出一段文本信息。如果操作成功則返回一非零值,否則返回零值。捕獲鍵盤消息的信息主要根據表中的描述,通過使用按位操作確定某些特定位的值,然后再判斷具體的狀態。

              wsprintf的用法的一個程序片斷:

              int x=6;

              LPTSTR szBuffer=new TCHAR[1024];

              wsprintf(szBuffer,"%d",x); //將變量x的值格式化為數字(%d)輸出到緩沖區szBuffer指向的內存單元。

              MessageBox(NULL,szBuffer," ",MB_OK);

              格式化規定符:

              %d 格式化為十進制有符號整數輸出到緩沖區

              %u 格式化為十進制無符號整數輸出到緩沖區

              %f 格式化為浮點數輸出到緩沖區

              %s 格式化為字符串輸出到緩沖區

              %c 格式化為單個字符輸出到緩沖區

              %e 格式化為指數形式的浮點數輸出到緩沖區

              %x 格式化為無符號以十六進制表示的整數(a-f小寫輸出)輸出到緩沖區

              %X 格式化為無符號以十六進制表示的整數(a-f大寫輸出)輸出到緩沖區

              %0 格式化為無符號以八進制表示的整數輸出到緩沖區

              %g 格式化為自動選擇合適的表示法輸出到緩沖區

              說明:

              可以在"%"和字母之間插進數字表示最大場寬。例如: = 表示輸出3位整型數,不夠3位右對齊。%9.2f 表示輸出場寬為9的浮點數,其中小數位為2,整數位為6,小數點占一位,不夠9位右對齊。%8s 表示輸出8個字符的字符串,不夠8個字符右對齊。如果字符串的長度、或整型數位數超過說明的場寬,將按其實際長度輸出。但對浮點數,若整數部分位數超過了說明的整數位寬度,將按實際整數位輸出;若小數部分位數超過了說明的小數位寬度,則按說明的寬度以四舍五入輸出。另外,若想在輸出值前加一些0,就應在場寬項前加個0.例如: d 表示在輸出一個小于4位的數值時,將在前面補0使其總寬度為4位。如果用浮點數表示字符或整型量的輸出格式,小數點后的數字代表最大寬度,小數點前的數字代表最小寬度。例如: %6.9s 表示顯示一個長度不小于6且不大于9的字符串。若大于9,則第9個字符以后的內容將被刪除。

              可以在"%"和字母之間加小寫字母l,表示輸出的是長型數。例如: %ld 表示輸出long整數,%lf 表示輸出double浮點數。托福答案

              可以控制輸出左對齊或右對齊,即在"%"和字母之間加入一個"-" 號可說明輸出為左對齊,否則為右對齊。例如: %-7d 表示輸出7位整數左對齊。%-10s 表示輸出10個字符左對齊。

              wsprintf只能輸出字符,字符串和整型數據,要輸出任意類型應該用swprintf

              如果為了把float存入CString,

              只需:

              CString s;

              float f= 5.345;

              s.Format( "%f", f );

              就做得到

              wsprintf是Windows API,不支持浮點型格式輸出;swprintf是C運行時函數,支持浮點型格式化輸出。

             

            posted on 2013-10-03 10:14 HAOSOLA 閱讀(414) 評論(0)  編輯 收藏 引用
             
            Copyright © HAOSOLA Powered by: 博客園 模板提供:滬江博客
            PK10開獎 PK10開獎
            亚洲一区精品伊人久久伊人| 国产亚洲精久久久久久无码77777| 久久天天躁狠狠躁夜夜96流白浆 | 狠狠色综合久久久久尤物| 久久久中文字幕| 久久综合亚洲色一区二区三区| 波多野结衣久久精品| 久久国产精品成人片免费| 91秦先生久久久久久久| 亚洲色欲久久久综合网东京热 | 久久久久久精品无码人妻| 国产精品久久久久…| 四虎影视久久久免费观看| 国产∨亚洲V天堂无码久久久| 久久久国产乱子伦精品作者| 久久996热精品xxxx| 精品久久久久香蕉网| 一本久久a久久精品综合香蕉| 欧美牲交A欧牲交aⅴ久久| 亚洲欧美精品一区久久中文字幕| 国内精品久久久久影院薰衣草 | 亚洲欧洲精品成人久久奇米网| 波多野结衣AV无码久久一区| 久久狠狠一本精品综合网| 国产麻豆精品久久一二三| 亚洲中文字幕无码久久2020| 久久夜色精品国产噜噜亚洲a| 久久成人国产精品| 亚洲国产精品一区二区久久hs | 大伊人青草狠狠久久| 久久99久久99精品免视看动漫| 日本久久久精品中文字幕| 国产精品久久久久jk制服| 亚洲国产精品一区二区久久hs| 欧美大战日韩91综合一区婷婷久久青草| 久久久久久久97| 久久精品亚洲AV久久久无码| 一日本道伊人久久综合影| 久久精品国产色蜜蜜麻豆| 久久人人爽人人爽人人片av麻烦 | 久久99国产一区二区三区|