• <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年10月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789
            統(tǒng)計(jì)
            • 隨筆 - 92
            • 文章 - 4
            • 評(píng)論 - 4
            • 引用 - 0

            導(dǎo)航

            常用鏈接

            留言簿

            隨筆檔案

            文章檔案

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

             

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

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

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

              …… // 其他可選參數(shù)

              );

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

              第一個(gè)參數(shù)是字符緩沖區(qū),后面是格式字符串,wsprintf不是將格式化結(jié)果寫到標(biāo)準(zhǔn)輸出,而是將其寫入緩沖區(qū)中,該函數(shù)返回該字符串的長(zhǎng)度。比如我們想通過(guò)MessageBox來(lái)輸出一個(gè)整形變量的值,可以用以下代碼實(shí)現(xiàn):

              char szBuffer[100];

              ing number=100;

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

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

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

              wsprintf對(duì)應(yīng)的字符串是寬字符型wchar_t,即一個(gè)字符占用2個(gè)字節(jié)的內(nèi)存空間。托福答案

              sprintf對(duì)應(yīng)的字符串是字符類型為char,即一個(gè)字符占用1個(gè)字節(jié)的內(nèi)存空間。

              sprintf是用于對(duì)ASCII碼的127個(gè)字符進(jìn)行操作,wsprintf是對(duì)UNICODE的多語(yǔ)言字符進(jìn)行操作。如:

              sprintf(buffer, "ascii");

              wsprintf(buffer, L"unicode");

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

              wsprintf函數(shù)能夠?qū)⒁唤M字符序列按lpFmt參數(shù)指定的格式轉(zhuǎn)換,然后保存在lpOut參數(shù)指定的字符緩沖區(qū)中等待輸出。其中,字符序列由可選參數(shù)決定,而可選參數(shù)的數(shù)目和具體內(nèi)容應(yīng)該與lpFmt所指定的格式一致。

              如果wsprintf函數(shù)操作成功,則返回輸出字符的數(shù)目,但這個(gè)字符數(shù)目不包括表示結(jié)束的NULL標(biāo)志。如果操作失敗,返回的整數(shù)值將與輸出的字符數(shù)目不相符。

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

              int nXStart, // 文本輸出起始點(diǎn) X坐標(biāo)

              int nYStart, // 文本輸出起始點(diǎn) Y坐標(biāo)

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

              int cbString // 字符串中字符的數(shù)目

              );

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

              wsprintf的用法的一個(gè)程序片斷:

              int x=6;

              LPTSTR szBuffer=new TCHAR[1024];

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

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

              格式化規(guī)定符:

              %d 格式化為十進(jìn)制有符號(hào)整數(shù)輸出到緩沖區(qū)

              %u 格式化為十進(jìn)制無(wú)符號(hào)整數(shù)輸出到緩沖區(qū)

              %f 格式化為浮點(diǎn)數(shù)輸出到緩沖區(qū)

              %s 格式化為字符串輸出到緩沖區(qū)

              %c 格式化為單個(gè)字符輸出到緩沖區(qū)

              %e 格式化為指數(shù)形式的浮點(diǎn)數(shù)輸出到緩沖區(qū)

              %x 格式化為無(wú)符號(hào)以十六進(jìn)制表示的整數(shù)(a-f小寫輸出)輸出到緩沖區(qū)

              %X 格式化為無(wú)符號(hào)以十六進(jìn)制表示的整數(shù)(a-f大寫輸出)輸出到緩沖區(qū)

              %0 格式化為無(wú)符號(hào)以八進(jìn)制表示的整數(shù)輸出到緩沖區(qū)

              %g 格式化為自動(dòng)選擇合適的表示法輸出到緩沖區(qū)

              說(shuō)明:

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

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

              可以控制輸出左對(duì)齊或右對(duì)齊,即在"%"和字母之間加入一個(gè)"-" 號(hào)可說(shuō)明輸出為左對(duì)齊,否則為右對(duì)齊。例如: %-7d 表示輸出7位整數(shù)左對(duì)齊。%-10s 表示輸出10個(gè)字符左對(duì)齊。

              wsprintf只能輸出字符,字符串和整型數(shù)據(jù),要輸出任意類型應(yīng)該用swprintf

              如果為了把float存入CString,

              只需:

              CString s;

              float f= 5.345;

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

              就做得到

              wsprintf是Windows API,不支持浮點(diǎn)型格式輸出;swprintf是C運(yùn)行時(shí)函數(shù),支持浮點(diǎn)型格式化輸出。

             

            posted on 2013-10-03 10:14 HAOSOLA 閱讀(412) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


             
            Copyright © HAOSOLA Powered by: 博客園 模板提供:滬江博客
            PK10開(kāi)獎(jiǎng) PK10開(kāi)獎(jiǎng)
            99久久免费国产精品| 99精品伊人久久久大香线蕉| 久久99精品久久久久久噜噜| 久久精品国产精品国产精品污| 人人狠狠综合久久亚洲高清| 久久精品国产一区二区| 无码任你躁久久久久久老妇| 久久精品国产亚洲av高清漫画| 亚洲欧美日韩中文久久| 日产精品久久久一区二区| 久久这里有精品| 少妇久久久久久被弄高潮| 精品人妻伦九区久久AAA片69| 亚洲欧美精品一区久久中文字幕| 情人伊人久久综合亚洲| 久久se精品一区精品二区| 国产精品99久久99久久久| 美女写真久久影院| 欧美午夜精品久久久久久浪潮| 亚洲精品综合久久| 久久人爽人人爽人人片AV| jizzjizz国产精品久久| 四虎国产精品免费久久5151| 久久午夜综合久久| 久久人人爽人人爽人人片av麻烦 | 国产精品久久久久久福利69堂| 伊人热热久久原色播放www| 久久这里只有精品首页| 久久精品国产亚洲AV麻豆网站| 国产高清美女一级a毛片久久w | 亚洲精品国产第一综合99久久| 久久精品国产亚洲av麻豆蜜芽 | 99精品国产99久久久久久97| 国产精品久久久久久福利69堂| 精品一久久香蕉国产线看播放| 国产精品久久久久久久久久影院 | 久久亚洲AV成人无码| 国产精品久久久久天天影视| 久久最新免费视频| 精品久久久久久久无码| 久久笫一福利免费导航|