• <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
            <2012年7月>
            24252627282930
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            常用鏈接

            留言簿(7)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            cocos2d-x

            OGRE

            OPenGL

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

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

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

            3) 字符串的格式化輸出
                如果要將字符串"guoke"保存到字符串str中
                sprintf(str,"%s","guoke"); // "guoke"最基本的,直接copy
                sprintf(str,"%6s","guoke"); // " guoke" 右對齊,超出時,輸出全部字符串
                sprintf(str,"%.3s","guoke"); // " guo"   只讀取字前三個字符,如果字符串不足3個取全部
                sprintf(str,"%-6s","guoke"); //  "guoke " 左對齊,超出時,輸出全部字符串
                sprintf(str,"%6.3s","guoke"); // "   guo" 右對齊,寬寬6,只取字符串前3個字符.如果字符串不足3個取全部
                sprintf(str,"%-6.3s","guoke"); // "guo   " 左對齊,寬寬6,只取字符串前3個字符.如果字符串不足3個取全部
                sprintf(str,"%3.6s","guoke"); // "guoke" 這樣感覺好像沒什么大的作用,當所取的字符串長度大于3是還是會輸出全部字符串的.
            posted on 2011-02-17 10:35 風輕云淡 閱讀(9988) 評論(0)  編輯 收藏 引用 所屬分類: C++
            国产成年无码久久久免费| 99久久精品免费国产大片| 久久久久久久久波多野高潮| 亚洲va久久久久| 9久久9久久精品| 亚洲人成无码网站久久99热国产| 伊人久久综合成人网| 大美女久久久久久j久久| 精品久久久中文字幕人妻| 老司机国内精品久久久久| 日韩欧美亚洲综合久久| 久久精品国产亚洲麻豆| 久久精品国产清自在天天线| 精品国产一区二区三区久久蜜臀| 中文字幕乱码人妻无码久久| 国产精品无码久久综合网| 色88久久久久高潮综合影院| 午夜精品久久久久久影视777| 国产精品视频久久| 无码AV波多野结衣久久| 欧美久久久久久| 久久激情亚洲精品无码?V| 久久久国产精品网站| 91久久精品91久久性色| 欧洲成人午夜精品无码区久久 | 久久精品国产免费一区| 亚洲伊人久久大香线蕉综合图片| 久久久久亚洲AV无码专区桃色| 久久久精品午夜免费不卡| 久久久久亚洲AV无码专区体验| 狠狠色丁香婷婷久久综合五月 | 亚洲精品无码专区久久同性男| 国产精品99久久不卡| 夜夜亚洲天天久久| 久久免费视频一区| 亚洲国产精品综合久久一线| 人妻中文久久久久| 欧美伊人久久大香线蕉综合| 国产香蕉久久精品综合网| 国内精品伊人久久久久777| 亚洲国产另类久久久精品小说|