• <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>
            隨筆 - 132  文章 - 51  trackbacks - 0
            <2011年2月>
            303112345
            6789101112
            13141516171819
            20212223242526
            272812345
            6789101112

            常用鏈接

            留言簿(7)

            隨筆分類(lèi)

            隨筆檔案

            文章分類(lèi)

            文章檔案

            cocos2d-x

            OGRE

            OPenGL

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

             
                對(duì)于熟悉C的人來(lái)說(shuō),sprintf并不陌生,在很多情況下,一般都會(huì)使用sprintf來(lái)代替itoa.sprintf函數(shù)的原型是:
            int sprintf(char* str, const char* format, ...);
                除了前兩個(gè)參數(shù)類(lèi)型固定外,后面可以接任意多個(gè)參數(shù),格式化輸出一個(gè)字符串:
            1) 整數(shù)格式化輸出
                如果要將數(shù)字 3915 保存到字符串str中/*假定字符串夠長(zhǎng),以下都是為這樣*/.
                sprintf(str,"%d",3915); // "3915"  這是最基本的輸出
                sprintf(str,"%5d",3915); // " 3915" 右對(duì)齊,相當(dāng)于C++中的制表符,如數(shù)字沒(méi)有5位時(shí)左另用空格補(bǔ)滿(mǎn).
                sprintf(str,"%05d",3915); // "03915"右對(duì)齊,相當(dāng)于C++中的制表符,如數(shù)字沒(méi)有5位時(shí)左另用'0'補(bǔ)滿(mǎn)
                sprintf(str,"%3d",3915); // "3915", 如果數(shù)字長(zhǎng)度超出時(shí),輸出完整的數(shù)字
                sprintf(str,"%-5d",3915); // "3915 " 左對(duì)齊,如數(shù)字沒(méi)有5位時(shí)左另用空格補(bǔ)滿(mǎn),超出時(shí)輸出所有數(shù)字
                對(duì)于十六進(jìn)制也類(lèi)同于十進(jìn)制
                sprintf(s, "%5x", 3915);  // "  f4b"右對(duì)齊,小寫(xiě)16 進(jìn)制,寬度占5 個(gè)位置
                sprintf(s, "%5X", 3915);  // "  F4B"右對(duì)齊,大寫(xiě)16 進(jìn)制,寬度占5 個(gè)位置

            2) 浮點(diǎn)數(shù)格式化輸出
                如果要將浮點(diǎn)數(shù)字 3.915 保存到字符串str中
                sprintf(str,"%f",3.915); // "3.915" 這是最基本的輸出,顯示完整的數(shù)字
                sprintf(str,"%.2f",3.915); // "3.92" 保留二位小數(shù),注意的一點(diǎn)是,這里是四舍五入,面不是像取整那樣丟掉小數(shù)位.但還存在一個(gè)問(wèn)題,就是當(dāng)前面的整數(shù)部分?jǐn)?shù)據(jù)大時(shí),也有可能直接丟掉后面位.
                
            對(duì)于數(shù)字轉(zhuǎn)字符串還有一個(gè)要注意的問(wèn)題,就是后面數(shù)字的類(lèi)型不一值的時(shí)候就可能得不到你想要的結(jié)果,需要強(qiáng)制轉(zhuǎn)換一下,如:
                int ii = 3915;
                sprintf(str,"%f",ii); // 這樣你就會(huì)遇到傳聞中的R6002,float point not load 的錯(cuò)誤,我在VS中寫(xiě)C++命令行程序,直接一閃而過(guò),斷點(diǎn)之類(lèi)的都沒(méi)用.可以改成:
                sprintf(str,"%f",(float)ii); // 這樣就正常以浮點(diǎn)輸出了   

            3) 字符串的格式化輸出
                如果要將字符串"guoke"保存到字符串str中
                sprintf(str,"%s","guoke"); // "guoke"最基本的,直接copy
                sprintf(str,"%6s","guoke"); // " guoke" 右對(duì)齊,超出時(shí),輸出全部字符串
                sprintf(str,"%.3s","guoke"); // " guo"   只讀取字前三個(gè)字符,如果字符串不足3個(gè)取全部
                sprintf(str,"%-6s","guoke"); //  "guoke " 左對(duì)齊,超出時(shí),輸出全部字符串
                sprintf(str,"%6.3s","guoke"); // "   guo" 右對(duì)齊,寬寬6,只取字符串前3個(gè)字符.如果字符串不足3個(gè)取全部
                sprintf(str,"%-6.3s","guoke"); // "guo   " 左對(duì)齊,寬寬6,只取字符串前3個(gè)字符.如果字符串不足3個(gè)取全部
                sprintf(str,"%3.6s","guoke"); // "guoke" 這樣感覺(jué)好像沒(méi)什么大的作用,當(dāng)所取的字符串長(zhǎng)度大于3是還是會(huì)輸出全部字符串的.
            posted on 2011-02-17 10:35 風(fēng)輕云淡 閱讀(9981) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): C++
            亚洲综合精品香蕉久久网| 日韩欧美亚洲综合久久影院d3| 国产精品gz久久久| 久久免费观看视频| 国产成人精品综合久久久久 | 久久九九久精品国产免费直播| 国产免费久久精品99re丫y| 久久精品人人做人人爽电影| 国产精品一久久香蕉国产线看 | 99久久精品免费看国产一区二区三区 | 一本大道久久a久久精品综合| 久久久久女教师免费一区| 久久丫精品国产亚洲av不卡| 久久精品一区二区影院| 精品久久久久中文字幕日本| 色综合合久久天天给综看| 精品久久一区二区三区| 久久精品中文无码资源站| 国产亚洲成人久久| 久久99精品久久只有精品| 久久精品国产乱子伦| 亚洲国产成人久久笫一页| 99国内精品久久久久久久| 国产精品久久久久影院色| 性欧美大战久久久久久久久| 久久久国产亚洲精品| 久久99精品九九九久久婷婷| 久久久久久综合一区中文字幕| 色综合久久无码中文字幕| 久久精品国产精品亚洲精品| 综合久久久久久中文字幕亚洲国产国产综合一区首| 国产一级持黄大片99久久| 日韩精品久久久久久免费| 伊人久久大香线蕉亚洲| 久久婷婷五月综合成人D啪| 日韩欧美亚洲综合久久| 亚洲国产一成久久精品国产成人综合 | 热re99久久6国产精品免费| 影音先锋女人AV鲁色资源网久久 | 国产国产成人久久精品| 久久综合久久综合九色|