• <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>
            隨筆 - 298  文章 - 377  trackbacks - 0
            <2012年6月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            1234567

            常用鏈接

            留言簿(34)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊(cè)

            收藏夾

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            Format參數(shù)是一個(gè)格式字符串,用于格式化Args里面的值的。
            Args又是什么呢,它是一個(gè)變體數(shù)組,即它里面可以有多個(gè)參數(shù),而且每個(gè)參數(shù)可以不同。
            如以下例子:
            Format('my name is %6s',['wind']);
            返回后就是
            my name is wind

            現(xiàn)在來看Format參數(shù)的詳細(xì)情況:
            Format里面可以寫普通的字符串,比如'my name is'
            但有些格式指令字符具有特殊意義,比如"%6s"

            一、格式指令具有以下的形式:
            "%" ["-"] [width] ["." prec] type
            它是以"%"開始,而以type結(jié)束,type表示一個(gè)具體的類型。中間是用來
            格式化type類型的指令字符,是可選的。

            先來看看type,type可以是以下字符:
            1.d 十制數(shù),表示一個(gè)整型值

            2.u 和d一樣是整型值,但它是無符號(hào)的,而如果它對(duì)應(yīng)的值是負(fù)的,則返回時(shí)
            是一個(gè)2的32次方減去這個(gè)絕對(duì)值的數(shù)
            如:Format('this is %u',[-2]);
            返回的是:this is 4294967294

            3.f 對(duì)應(yīng)浮點(diǎn)數(shù)

            4.e 科學(xué)表示法,對(duì)應(yīng)整型數(shù)和浮點(diǎn)數(shù),
            比如Format('this is %e',[-2.22]);
            返回的是:this is -2.22000000000000E+000
            等一下再說明如果將數(shù)的精度縮小

            5.g 這個(gè)只能對(duì)應(yīng)浮點(diǎn)型,且它會(huì)將值中多余的數(shù)去掉
            比如Format('this is %g',[02.200]);
            返回的是:this is 2.2

            6.n 只能對(duì)應(yīng)浮點(diǎn)型,將值轉(zhuǎn)化為號(hào)碼的形式。看一個(gè)例子就明白了
            Format('this is %n',[4552.2176]);
            返回的是this is 4,552.22
            注意有兩點(diǎn),一是只表示到小數(shù)后兩位,等一下說怎么消除這種情況
            二是,即使小數(shù)沒有被截?cái)啵膊粫?huì)也像整數(shù)部分一樣有逗號(hào)來分開的

            7.m 錢幣類型,但關(guān)于貨幣類型有更好的格式化方法,這里只是簡(jiǎn)單的格式化
            另外它只對(duì)應(yīng)于浮點(diǎn)值
            Format('this is %m',[9552.21]);
            返回:this is ¥9,552.21

            8.p 對(duì)應(yīng)于指針類型,返回的值是指針的地址,以十六進(jìn)制的形式來表示
            例如:
            var X:integer;
            p:^integer;
            begin
            X:=99;
            p:=@X;

            Edit1.Text:=Format('this is %p',[p]);
            end;
            Edit1的內(nèi)容是:this is 0012F548

            9.s 對(duì)應(yīng)字符串類型,不用多說了吧

            10.x 必須是一個(gè)整形值,以十六進(jìn)制的形式返回
            Edit1.Text:=Format('this is %X',[15]);
            返回是:this is F

            二、下面介紹格式化Type的指令:

            1.[width] 指定將被格式化的值占的寬度,看一個(gè)例子就明白了
            Format('this is %4d',[12]);
            輸出是:this is 12
            這個(gè)是比較容易,不過如果Width的值小于參數(shù)的長(zhǎng)度,則沒有效果。
            如:Format('this is %1d',[12]);
            輸出是:this is 12
            注:在width前可以加0表示不足長(zhǎng)度部分使用0補(bǔ)齊,默認(rèn)為用空格補(bǔ)齊;

            2.[-] 這個(gè)指定參數(shù)向左齊,和[width]合在一起最可以看到效果:
            Format('this is %-4d,yes',[12]);
            輸出是:this is 12 ,yes

            3.[l] 向右對(duì)齊;

            3.["." prec] 指定精度,對(duì)于浮點(diǎn)數(shù)效果最佳:
            Format('this is %.2f',['1.1234]);
            輸出 this is 1.12
            Format('this is %.7f',['1.1234]);
            輸了 this is 1.1234000

            而對(duì)于整型數(shù),如果prec比如整型的位數(shù)小,則沒有效果
            反之比整形值的位數(shù)大,則會(huì)在整型值的前面以0補(bǔ)之
            Format('this is %.7d',[1234]);
            輸出是:this is 0001234]

            對(duì)于字符型,剛好和整型值相反,如果prec比字符串型的長(zhǎng)度大
            則沒有效果,反之比字符串型的長(zhǎng)度小,則會(huì)截?cái)辔膊康淖址?br />Format('this is %.2s',['1234']);
            輸出是 this is 12

            而上面說的這個(gè)例子:
            Format('this is %e',[-2.22]);
            返回的是:this is -2.22000000000000E+000
            怎么去掉多余的0呢,這個(gè)就行啦
            Format('this is %.2e',[-2.22]);

             


            %d 用來輸出十進(jìn)制整數(shù),可以有長(zhǎng)度的修飾 

            %5d   表示用5個(gè)數(shù)字的寬度顯示數(shù)字,這里的寬度表示顯示的寬度;如果輸入的參數(shù)長(zhǎng)度小于5,前面用空格補(bǔ)齊;
            %05d 表示用5個(gè)數(shù)字的寬度顯示數(shù)字,這里的寬度表示顯示的寬度;如果輸入的參數(shù)長(zhǎng)度小于5,前面用0補(bǔ)齊;

            %o和%x 分別表示8進(jìn)制 和16進(jìn)制   都表示無符號(hào)的整形 

            %u 表示無符號(hào)10進(jìn)制整形的輸入 

            %c 字符輸出 

            %s 字符串輸出(- 左對(duì)齊,l右對(duì)齊,"5.3" 5表示顯示這個(gè)字符的屏幕寬度,3表示要截取的字符數(shù)) 
                  str.Format("%8ls","test");//右對(duì)齊       (右對(duì)齊時(shí)l在長(zhǎng)度之后)
                  str.Format("%-8s","test");//左對(duì)齊       (左對(duì)齊時(shí)-在長(zhǎng)度之前)

            %f 以小數(shù)格式輸出(-、l、5.3 同上) 

            %e 浮點(diǎn)輸出

             

            ——————————————————————————————————————————————————————————————————————————

             在MFC程序中,使用CString來處理字符串是一個(gè)很不錯(cuò)的選擇。CString既可以處理Unicode標(biāo)準(zhǔn)的字符串,也可以處理ANSI標(biāo)準(zhǔn)的字符串。CString的Format方法給我們進(jìn)行字符串的轉(zhuǎn)換帶來了很大的方便,比如常見的int、float和double這些數(shù)字類型轉(zhuǎn)換為CString字符串只需一行代碼就可以實(shí)現(xiàn)。

              先看看Format用于轉(zhuǎn)換的格式字符:

              %c                 單個(gè)字符

              %d                 十進(jìn)制整數(shù)(int)

              %ld                十進(jìn)制整數(shù)(long)

              %f                 十進(jìn)制浮點(diǎn)數(shù)(float)

              %lf                十進(jìn)制浮點(diǎn)數(shù)(double)

              %o                 八進(jìn)制數(shù)

              %s                 字符串

              %u                 無符號(hào)十進(jìn)制數(shù)

              %x                 十六進(jìn)制數(shù)

              1、int轉(zhuǎn)換為CString:

              CString str;

              int number=15;

              //str="15"

              str.Format(_T("%d"),number);

              //str=" 15"(前面有兩個(gè)空格;4表示將占用4位,如果數(shù)字超過4位將輸出所有數(shù)字,不會(huì)截?cái)?

              str.Format(_T("%4d"),number);

              //str="0015"(.4表示將占用4位,如果數(shù)字超過4位將輸出所有數(shù)字,不會(huì)截?cái)?

              str.Format(_T("%.4d"),number);

              long轉(zhuǎn)換為CString的方法與上面相似,只需要把%d改為%ld就可以了。

              2、double轉(zhuǎn)換為CString:

              CString str;

              double num=1.46;

              //str="1.46"

              str.Format(_T("%lf"),num);

              //str="1.5"(.1表示小數(shù)點(diǎn)后留1位,小數(shù)點(diǎn)后超過1位則四舍五入)

              str.Format(_T("%.1lf"),num);

              //str="1.4600"

              str.Format(_T("%.4f"),num);

              //str=" 1.4600"(前面有1個(gè)空格)

              str.Format(_T("%7.4f"),num);

              float轉(zhuǎn)換為CString的方法也同上面相似,將lf%改為f%就可以了。

              3、將十進(jìn)制數(shù)轉(zhuǎn)換為八進(jìn)制:

              CString str;

              int num=255;

              //str="377"

              str.Format(_T("%o"),num);

              //str="00000377"

              str.Format(_T("%.8o"),num);

             

             

             

             

             

             

            Format是一個(gè)很常用,卻又似乎很煩的方法,以下是它的完整概貌,以供大家查詢之用:  

            格式化字符串forma("%d",12)意思是將一個(gè)整形的格式化的字符(我認(rèn)為是保持其形狀不變
            1).
            格式說明總是以%字符開始,以下是不同類型數(shù)據(jù)的格式方式%號(hào)后的說明
            d
            輸出帶符號(hào)十進(jìn)制數(shù) 
            o
            輸出無符號(hào)八進(jìn)制數(shù) 
            x
            輸出無符號(hào)十六進(jìn)制數(shù) 
            u
            輸出無符號(hào)數(shù) 
            c
            輸出單個(gè)字符 
            s
            輸出一串字符 
            f
            輸出實(shí)數(shù)(6位小數(shù)) 
            e
            以指數(shù)形式輸出實(shí)數(shù) 
            g
            選用fe格式中輸出寬度較小的格式,不輸出
            ld
            輸入輸出long型數(shù)據(jù) 
            lf
            輸入輸出double型數(shù)據(jù) 
            m
            數(shù)據(jù)輸出寬度為
            .n
            輸出小數(shù)位數(shù)為


            一、字符串 

            首先看它的聲明:  
            function Format(const Format: string; const Args: array of const): string; overload;  
            事實(shí)上Format方法有兩個(gè)種形式,另外一種是三個(gè)參數(shù)的,主要區(qū)別在于它是線程安全的,  
            但并不多用,所以這里只對(duì)第一個(gè)介紹:  

            function Format(const Format: string; const Args: array of const): string; overload;  
            Format
            參數(shù)是一個(gè)格式字符串,用于格式化Args里面的值的。Args又是什么呢,  
            它是一個(gè)變體數(shù)組,即它里面可以有多個(gè)參數(shù),而且每個(gè)參數(shù)可以不同。  
            如以下例子:  
            Format("my name is %6s","wind");  
            返回后就是  
            my name is wind  

            現(xiàn)在來看Format參數(shù)的詳細(xì)情況:  
            Format
            里面可以寫普通的字符串,比如"my name is"  
            但有些格式指令字符具有特殊意義,比如"%6s"  

            格式指令具有以下的形式:  
            "%" [index ":"] ["-"] [width] ["." prec] type  
            它是以"%"開始,而以type結(jié)束,type表示一個(gè)具體的類型。中間是用來  
            格式化type類型的指令字符,是可選的。  

            先來看看type,type可以是以下字符:  
            十制數(shù),表示一個(gè)整型值  
            d一樣是整型值,但它是無符號(hào)的,而如果它對(duì)應(yīng)的值是負(fù)的,則返回時(shí)  
            是一個(gè)232次方減去這個(gè)絕對(duì)值的數(shù)  
            如:Format("this is %u",-2);  
            返回的是:this is 4294967294  
            對(duì)應(yīng)浮點(diǎn)數(shù)  
            科學(xué)表示法,對(duì)應(yīng)整型數(shù)和浮點(diǎn)數(shù),  
            比如Format("this is %e",-2.22);  
            返回的是:this is -2.220000E+000  
            等一下再說明如果將數(shù)的精度縮小  
            這個(gè)只能對(duì)應(yīng)浮點(diǎn)型,且它會(huì)將值中多余的數(shù)去掉  
            比如Format("this is %g",02.200);  
            返回的是:this is 2.2  
            只能對(duì)應(yīng)浮點(diǎn)型,將值轉(zhuǎn)化為號(hào)碼的形式。看一個(gè)例子就明白了  
            Format("this is %n",4552.2176);  
            返回的是this is 4,552.22  
            注意有兩點(diǎn),一是只表示到小數(shù)后兩位,等一下說怎么消除這種情況  
            二是,即使小數(shù)沒有被截?cái)啵膊粫?huì)也像整數(shù)部分一樣有逗號(hào)來分開的  
            錢幣類型,但關(guān)于貨幣類型有更好的格式化方法,這里只是簡(jiǎn)單的格式化  
            另外它只對(duì)應(yīng)于浮點(diǎn)值  
            Format("this is %m",9552.21);  
            返回:this is 9,552.21  
            對(duì)應(yīng)于指針類型,返回的值是指針的地址,以十六進(jìn)制的形式來表示  
            例如:  
            Format("this is %p",p);  
            Edit1
            的內(nèi)容是:this is 0012F548  
            對(duì)應(yīng)字符串類型,不用多說了吧  
            必須是一個(gè)整形值,以十六進(jìn)制的形式返回  
            Format("this is %X",15);  
            返回是:this is F  

            類型講述完畢,下面介紹格式化Type的指令:  
            [index ":"] 
            這個(gè)要怎么表達(dá)呢,看一個(gè)例子  
            Format("this is %d %d",12,13);  
            其中第一個(gè)%d的索引是0,第二個(gè)%d1,所以字符顯示的時(shí)候  
            是這樣 this is 12 13  

            而如果你這樣定義:  
            Format("this is %1:d %0:d",12,13);  
            那么返回的字符串就變成了  
            this is 13 12  
            現(xiàn)在明白了嗎,[index ":"] 中的index指示Args中參數(shù)顯示的  
            順序  

            還有一種情況,如果這樣Format("%d %d %d %0:d %d", 1, 2, 3, 4) ; 
            將返回1 2 3 1 2  
            如果你想返回的是1 2 3 1 4,必須這樣定:  
            Format("%d %d %d %0:d %3:d", 1, 2, 3, 4) ; 
            但用的時(shí)候要注意,索引不能超出Args中的個(gè)數(shù),不然會(huì)引起異常  
            Format("this is %2:d %0:d",12,13);  //error
            由于Args中只有12 13 兩個(gè)數(shù),所以Index只能是01,這里為2就錯(cuò)了  
            [width] 
            指定將被格式化的值占的寬度,看一個(gè)例子就明白了  
            Format("this is %4d",12);  
            輸出是:this is 12  
            這個(gè)是比較容易,不過如果Width的值小于參數(shù)的長(zhǎng)度,則沒有效果。  
            如:Format("this is %1d",12);  
            輸出是:this is 12  
            ["-"] 
            這個(gè)指定參數(shù)向左齊,和[width]合在一起最可以看到效果:  
            Format("this is %-4d,yes",12);  
            輸出是:this is 12 ,yes  

            ["." prec] 
            指定精度,對(duì)于浮點(diǎn)數(shù)效果最佳:  
            Format('this is %.2f',['1.1234]);  
            輸出 this is 1.12  
            Format('this is %.7f',['1.1234]);  
            輸了 this is 1.1234000  

            而對(duì)于整型數(shù),如果prec比如整型的位數(shù)小,則沒有效果  
            反之比整形值的位數(shù)大,則會(huì)在整型值的前面以0補(bǔ)之  
            Format('this is %.7d',[1234]);  
            輸出是:this is 0001234]  

            對(duì)于字符型,剛好和整型值相反,如果prec比字符串型的長(zhǎng)度大  
            則沒有效果,反之比字符串型的長(zhǎng)度小,則會(huì)截?cái)辔膊康淖址?span lang="EN-US">  
            Format('this is %.2s',['1234']);  
            輸出是 this is 12  

            而上面說的這個(gè)例子:  
            Format('this is %e',[-2.22]);  
            返回的是:this is -2.22000000000000E+000  
            怎么去掉多余的0呢,這個(gè)就行啦  
            Format('this is %.2e',[-2.22]);  

            好了,第一個(gè)總算講完了,應(yīng)該對(duì)他的應(yīng)用很熟悉了吧  

            m_result.Format("
            您選的城市是:/r/n %s,/r/n您選的人是:/r/n%s",city1 +  city2 +  city3,people); 
              UpdateData(0);

            格式小結(jié): 
            1)最常用的格式是%d,含義是以10進(jìn)制形式打印一個(gè)整數(shù)。 
            如果輸出的整數(shù)是負(fù)數(shù),則,輸出的第一個(gè)字符就是‘-’號(hào) 
            2%u格式與%d格式類似,只不過要求打印無符號(hào)10進(jìn)制整數(shù)。 
            3%o格式請(qǐng)求輸出8進(jìn)制整數(shù) 
            4%x%X格式請(qǐng)求輸出16進(jìn)制整數(shù)。 
            %x
            格式中用小寫字母a,b,c,d,e,f來表示1015之間的數(shù) 
            %X
            格式中用大寫字母A,B,C,D,E,F來表示1015之間的數(shù) 
            共同點(diǎn):8進(jìn)制和16進(jìn)制整數(shù)總是作為無符號(hào)數(shù)處理的。 
            5%s格式用于打印字符串,與之對(duì)應(yīng)的參數(shù)應(yīng)該是一個(gè)字符指針,待輸出的字符始于該指針?biāo)赶虻牡刂罚钡匠霈F(xiàn)一個(gè)空字符('/0' 
            才終止。 
            6%c格式用于打印單個(gè)字符:例如: 
            printf("%c",c); 
            等價(jià)于 putchar©; 
            7%g,%f%e這三個(gè)格式用于打印浮點(diǎn)值。 
            %g
            格式用于打印那些不需要按列對(duì)齊的浮點(diǎn)數(shù)特別有用。其作用有二: 
            一,去掉該數(shù)尾多余的零(沒有達(dá)到六位的數(shù)) 
            二,保留六位有效數(shù)字(多余六位的) 
            %e
            格式用于打印浮點(diǎn)數(shù)時(shí),一律顯示地使用指數(shù)形式:例如:輸出圓周率時(shí)是:3.141593e+00 
            兩者的區(qū)別: 
            %g
            格式打印出的數(shù)是總共6位有效數(shù)字 
            %e
            格式打印出小數(shù)點(diǎn)后的6位有效數(shù)字 
            %f
            禁止使用指數(shù)形式來表示浮點(diǎn)數(shù)。因此圓周率輸出為:3.141593 
            (但注意它的精度要求:也是小數(shù)點(diǎn)后6位有效數(shù)字) 
            8%%格式用于打印一個(gè)%字符。 
            9%E%G只是在輸出時(shí)用大寫字母(E)代替了小寫字母(e) 
            另外需要注意的一些知識(shí)點(diǎn)

            *************************************** 
            對(duì)齊規(guī)則: 
            1)當(dāng)指定寬度大于要輸出位數(shù)時(shí),數(shù)右對(duì)齊,左端補(bǔ)空格 
            當(dāng)前綴'-'號(hào)時(shí),想要數(shù)左對(duì)齊,右端補(bǔ)空格 
            大大的前提:只有當(dāng)指定寬度存在時(shí),前綴'-'才有意義。 
            經(jīng)驗(yàn):一般來說,左端對(duì)齊的形式看上去要美觀整齊一點(diǎn)。 
            *************************************** 
            輸出正負(fù)號(hào)的技巧:(記住)例如: 
            printf("%+d %+d %+d/n",-5,0,5); 
            只要在中間加個(gè)“+”號(hào)就行。作用是輸出符號(hào)位(即,數(shù)的正負(fù)號(hào)) 
            如果不希望正數(shù)的前面出現(xiàn)‘+’號(hào),可用下面的方法 

            *************************************** 
            只要在中間加個(gè)“ ”號(hào)(即:空格)就行。(記住)例如: 
            作用:如果一個(gè)數(shù)是非負(fù)數(shù),就在它的前面插入一個(gè)空格。 
            int i; 
            for(i=-3;i<=3;i++) 
             printf("% d/n",i); //
            注意%d之間有一個(gè)空格 
            輸出結(jié)果如下: 
            -3 
            -2 
            -1 




            問題:如果‘+’‘ ’同時(shí)出現(xiàn)在中間時(shí),要以‘+’為準(zhǔn)。 
            兩個(gè)符號(hào)的共同點(diǎn):用于對(duì)齊輸出的數(shù):(尤其對(duì)于小數(shù)來說) 
             
            兩種格式:%+e% e 
            C
            語言中基本的輸入輸出函數(shù)有: 
            putchar ():
            把變量中的一個(gè)字符常量輸出到顯示器屏幕上
            getchar ();
            從鍵盤上輸入一個(gè)字符常量,此常量就是該函數(shù)的值
            printf ();
            把鍵盤中的各類數(shù)據(jù),加以格式控制輸出到顯示器屏幕上
            scanf ();
            從鍵盤上輸入各類數(shù)據(jù),并存放到程序變量中
            puts ():
            把數(shù)組變量中的一個(gè)字符串常量輸出到顯示器屏幕上
            gets ():
            從鍵盤上輸入一個(gè)字符串常量并放到程序的數(shù)組中
            sscanf(); 
            從一個(gè)字符串中提取各類數(shù)據(jù)。 
             putchar() 
             getchar() 顧名思議就是從輸入流中獲取一個(gè)字符和輸出一個(gè)字符,比較簡(jiǎn)單,不再多講。 
            例子如下: 
            char c = getchar(); 
            putchar©; 
             
            格式化輸入輸出scanf()printf()是最有用的,所以重點(diǎn)講一下。 
            printf(): 
            一般形式
            printf("
            格式控制".輸出列表);  
            eg : printf("a=%d,b=%f,c=%c/n",a,b,c); 
            1;
            格式控制
            格式控制是用雙引號(hào)括起來的字符串,也稱"轉(zhuǎn)換控制字符串",它包含以下兩部分信息
            格式說明:由"%"和格式字符組成,%d,%f,%c,他的作用是把輸出數(shù)據(jù)轉(zhuǎn)換為指定格式輸出,格式的說明總是由"%"字符開始的.

            普通字符:需要原樣輸出的字符,或者是一些有特殊含義的字符,如/n,/t 
            2;
            輸出列表 
            就是需要輸出的一些數(shù)據(jù),也可以是表達(dá)式,如果在函數(shù)中需要輸出多個(gè)變量或表達(dá)式,則要用逗號(hào)隔開
             
            一些特殊字符的輸出: 
            單引號(hào),雙引號(hào),和反斜杠的輸出在前面加轉(zhuǎn)義字符”/” 
            如:”/’” , “/”” , “//” 
            %
            的輸出用兩個(gè)連在一起的%%,即printf(“%%”); 

            常用的格式說明如下
            格式字符 
            以十進(jìn)制形式輸出帶符號(hào)整數(shù)(正數(shù)不輸出符號(hào))  
            以八進(jìn)制形式輸出無符號(hào)整數(shù)(不輸出前綴O)  
            以十六進(jìn)制形式輸出無符號(hào)整數(shù)(不輸出前綴OX)  
            以十進(jìn)制形式輸出無符號(hào)整數(shù)  
            以小數(shù)形式輸出單精度實(shí)數(shù)  
            lf
            以小數(shù)形式輸出雙精度實(shí)數(shù) 
            以指數(shù)形式輸出單、雙精度實(shí)數(shù)  
            %f%e中較短的輸出寬度輸出單、雙精度實(shí)數(shù)  
            輸出單個(gè)字符  
            輸出字符串  
             
            這里強(qiáng)調(diào)一下:網(wǎng)上很多文章都說lf是一樣的,即不管單精度,雙精度浮點(diǎn)數(shù),都可以用f, 但我在POJ上做過測(cè)試,輸出Double時(shí)用f確實(shí)也可以 ,但讀入時(shí),用f就報(bào)WA,所以大家如果對(duì)Double進(jìn)行讀寫的話,都用lf吧。 
            說到Double,再啰嗦一句,建議大家要用到浮點(diǎn)數(shù)時(shí)都用Double,不要用float,因?yàn)樵诤芏嗲闆r下,float精度不夠會(huì)導(dǎo)致WA 
            特殊: 
            對(duì)64位整數(shù)的輸入輸出,在POJ上的C++環(huán)境下(VC)64位整數(shù)是: 
            __int64 
            (注意int前面是兩個(gè)下劃線) 
            輸入輸出格式為”%I64d”. 
            G++環(huán)境下(Dev C++) 64位整數(shù)是 
            long long 
            輸入輸出格式為”%lld”. 

            輸出寬度 
              用十進(jìn)制整數(shù)來表示輸出的最少位數(shù)。 注意若實(shí)際位數(shù)多于定義的寬度,則按實(shí)際位數(shù)輸出, 若實(shí)際位數(shù)少于定義的寬度則補(bǔ)以空格或0 
            精度 
              精度格式符以“.”開頭,后跟十進(jìn)制整數(shù)。意義是:如果輸出數(shù)字,則表示小數(shù)的位數(shù);如果輸出的是字符, 則表示輸出字符的個(gè)數(shù);若實(shí)際位數(shù)大于所定義的精度數(shù),則截去超過的部分。 
            標(biāo)志格式字符  
            結(jié)果左對(duì)齊,右邊填空格  
            輸出符號(hào)(正號(hào)或負(fù)號(hào))空格輸出值為正時(shí)冠以空格,為負(fù)時(shí)冠以負(fù)號(hào) 
            例如: 
            double c=24212345.24232; 
            printf(“%020.4”); 
            表示輸出精確到小數(shù)點(diǎn)后4位,輸出占20位,若有空余的位補(bǔ)0. 
             scanf
             
            scanf
            的很多用法都是和printf對(duì)應(yīng)的,故不再贅述。 
            說一下scanf一個(gè)特別好用的地方,就是可以濾去一些不想要的東西。 
            舉例說明如下: 
            比如輸入為日期 yyyy-mm-dd,就可以這樣寫: 
            int year,moth,day; 
            scanf(“%d-%d-%d”,&year,&moth,&day); 
            再比如: 
            scanf("%3d %*3d %2d",&m,&n); 
            輸入113 118 69回車(系統(tǒng)將113賦予m,69賦予n,因?yàn)?span lang="EN-US">*號(hào)表示跳過它相應(yīng)的數(shù)據(jù)所以118不賦予任何變量
            puts()
            用的不多,且基本都能用printf()代替,故不再多說。 
            gets()
            是從輸入流中獲取一行字符串放入字符數(shù)組中
            char in[100]; 
            gets(in); 
            大家可能最容易出錯(cuò)的地方就是字符串的輸入,所以強(qiáng)調(diào)一下: 
            能進(jìn)行字符,字符串輸入的有: 
            getchar(), scanf(“%c”); scanf(“%s”), gets() 
            其中getchar()  scanf(“%c”)的功能是一樣的。 
            需要注意的是,這兩個(gè)函數(shù)讀入的是輸入流中當(dāng)前位置的字符, 
            比如: 
             scanf(“%d”,&n); 
             c = getchar(); 
            假設(shè)輸入 67/ (假設(shè)“/”代表回車),則第一個(gè)scanf讀入一個(gè)整數(shù)67后,當(dāng)前輸入流的位置是67之后,即指向回車符,所以第二個(gè)getchar()讀入的就是一個(gè)回車符了,即 c = ‘/n’ 
            同樣,gets()也是從當(dāng)前位置讀入一行字符串。 
            比如: 
            scanf(“%d”,&n); 
            gets(str); 
            此時(shí)讀入字符數(shù)組中的字符串就是“/n”  
            所以通常在用scanf讀入一個(gè)非字符串的類型之后,如果要讀入字符,或字符數(shù)組,都用一個(gè)額外的getchar()把回車符讀掉,若后面跟的不止一個(gè)回車符,可能還有多余的空格的話,就用gets()讀掉。 
             
            和以上不同的是,scanf(“%s”) 讀入的時(shí)候是會(huì)忽略掉空格,回車和制表符的。并且以空格,回車和制表符作為字符串結(jié)束的標(biāo)志。 
             
            經(jīng)常會(huì)有這樣的題,輸入第一行是一個(gè)整數(shù),接下來每行的第一個(gè)是一個(gè)字符,用來表示某種操作,后面再跟一些數(shù)據(jù),比如: 

            A 100 2 
            B 23 
            A 23 89 
            B 34 
            像這種輸入就需要小心,讀入字符時(shí)不要讀成回車符。 
            為了防止意外,我一般是這樣處理這類輸入的: 
            char model[2]; 
            Scanf(“%d”,&n); 
            for(…,…,…){ 
             scanf(“%s”,model); 
             if(model[0] == ‘A’){ 

            else{ 


             sscanf(): 
            sscanf()
            經(jīng)常用來分解字符串,功能非常強(qiáng)大,但很多功能都需要正則表達(dá)式的知識(shí),所以就介紹一下最簡(jiǎn)單的幾種用法,大家如果想了解更多的話,自己去網(wǎng)上找吧。 
            1. 
            char str[100],str1[100],str2[100]; 
            gets(str); 
            sscanf(str,”%s%s”,str1,str2); 
            將讀入的一整行字符串按空格,制表符或回車符分割成兩個(gè)字符串。 

            取指定長(zhǎng)度的字符串。如在下例中,取最大長(zhǎng)度為4字節(jié)的字符串。 
              sscanf("123456 ", "%4s", str);



            ——————————————————————————————————————————————————————————————————————————
            1. 列左對(duì)齊

            printf("%-*s", 20, string); 表示輸出字符串左對(duì)齊輸出20,如果字符串不夠20個(gè),以空格補(bǔ)齊。 -表示左對(duì)齊。


            例:

            struct help_struct
            {
            char *option_name;
            char *option_value;
            char *option_ext;
            };


            struct help_struct options[] =
            {
            {"set_node_id", "node_id", "set the node id"},
            {"set_debug_level", "debug_level", "4:DEBUG 3:INFO 2:WARNING 1:ERR 0:NESS"},
            {"flush_pool", "pool_name", ""},
            {"get_lu_count", "", ""},
            {"check_pools", "pool_name", ""},
            {"invalid_pool", "pool_name", ""},
            {"set_mirror", "mirror_state", "0:disable 1:enable"},
            {(char*)NULL,  (char*)NULL, (char*)NULL}
            };


            static void show_usage(const char *execname)
            {
            struct help_struct *opt = NULL;
            printf("Usage: %s [options] ...\n", execname);
            printf("Options:\n");
            for(opt = options; opt->option_name; opt++)
            {
            printf("  --");
            printf("%-*s",25, opt->option_name);
            printf("%-*s",20, opt->option_value);
            printf("%-*s",50, opt->option_ext);
            printf("\n");
            }
            }

            show_usage輸出結(jié)果為:

            Usage: ./vicm_test [options] ...
            Options:
              --set_node_id              node_id             set the node id                                   
              --set_debug_level       debug_level      4:DEBUG 3:INFO 2:WARNING 1:ERR 0:NESS             
              --flush_pool                  pool_name                                                             
              --get_lu_count                                                                                   
              --check_pools              pool_name                                                             
              --invalid_pool               pool_name                                                             
              --set_mirror                  mirror_state       0:disable 1:enable  



            2. 右對(duì)齊

            printf("%*s", 20, string); 表示輸出字符串右對(duì)齊輸出20,如果字符串不夠20個(gè),以空格補(bǔ)齊。 沒有-表示右對(duì)齊。


            例:

            static void show_usage(const char *execname)
            {
            struct help_struct *opt = NULL;
            printf("Usage: %s [options] ...\n", execname);
            printf("Options:\n");
            for(opt = options; opt->option_name; opt++)
            {
            printf("  --");
            printf("%*s",25, opt->option_name);
            printf("%*s",20, opt->option_value);
            printf("%*s",50, opt->option_ext);
            printf("\n");
            }
            }

            show_usage輸出結(jié)果為:

            Usage: ./vicm_test [options] ...
            Options:

              --                 set_node_id                 node_id                                                                    set the node id
              --          set_debug_level          debug_level             4:DEBUG 3:INFO 2:WARNING 1:ERR 0:NESS
              --                     flush_pool            pool_name                                                  
              --                 get_lu_count                                                                      
              --                  check_pools           pool_name                                                  
              --                   invalid_pool            pool_name                                                  
              --                      set_mirror           mirror_state                                                           0:disable 1:enable


            ——————————————————————————————————————————————————————————————————————————

            C\C++格式化輸出

            有時(shí)候我們?yōu)榱耸馆敵龅臄?shù)整齊地排列,而這些數(shù)值又大小不等,有的是一位,有的是兩位,還有多位的,怎么辦呢?
            在C語言中,我們可以能過在%號(hào)后加數(shù)字來限定輸出的數(shù)字的位數(shù)長(zhǎng)度。先復(fù)習(xí)一下各種格式的表示方法如下:
            %d 十進(jìn)制有符號(hào)整數(shù)
            %u 十進(jìn)制無符號(hào)整數(shù) 
            %f 浮點(diǎn)數(shù) 
            %s 字符串 
            %c 單個(gè)字符 
            %p 指針的值 
            %e 指數(shù)形式的浮點(diǎn)數(shù) 
            %x, %X 無符號(hào)以十六進(jìn)制表示的整數(shù) 
            %0 無符號(hào)以八進(jìn)制表示的整數(shù) 
            %g 自動(dòng)選擇合適的表示法

            可以在"%"和字母之間插進(jìn)數(shù)字表示最大字寬。
            例如: 
            %3d 表示輸出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ù)超過說明的寬度, 將按其實(shí)際長(zhǎng)度輸出。 但對(duì)浮點(diǎn)數(shù), 若整數(shù)部分位數(shù)超過了說明的整數(shù)位寬度, 將按實(shí)際整數(shù)位輸出; 若小數(shù)部分位數(shù)超過了說明的小數(shù)位寬度, 則按說明的寬度以四舍五入輸出。 
            另外, 若想在輸出值前加一些0, 就應(yīng)在場(chǎng)寬項(xiàng)前加個(gè)0。 
            例如: 
            %04d 表示在輸出一個(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)可說明輸出為左對(duì)齊, 否則為右對(duì)齊。 
            例如: 
            %-7d 表示輸出7位整數(shù)左對(duì)齊 %-10s 表示輸出10個(gè)字符左對(duì)齊

            在C++語言中,我們可以這樣做:
            cout<<setw(10)<<i<<endl;
            表示輸出補(bǔ)足十個(gè)字節(jié)寬,右對(duì)齊。

            cout<<setw(-10)<<i<<endl;
            表示輸出補(bǔ)足十個(gè)字節(jié)寬,左對(duì)齊。
            另外要注意,在文件在開頭要加上一個(gè)頭文件
            #include <iomanip>
            以使setw()函數(shù)能正常工作。

            示例:

            #include <iostream>
            #include <iomanip>

            using namespace std;

            const double d1 = 1.23456789;
            const long      l1 = 65536;
            int     base = 10;


            int main( int argc, char* argv[] )
            {
            //右對(duì)齊
            cout<<setw(10)<<d1<<endl;
            cout<<setw(10)<<l1<<endl;
            cout<<setw(10)<<base<<endl;
            //左對(duì)齊
            cout<<setw(-10)<<d1<<endl;
            cout<<setw(-10)<<l1<<endl;
            cout<<setw(-10)<<base<<endl;

            return   0;
            }


            ——————————————————————————————————————————————————————————————————————————

            "格式描述串"是由一系列的"格式轉(zhuǎn)換說明符號(hào)"組成,格式轉(zhuǎn)換說明符號(hào)的描述形式如下:
            % [+][-] 0 m[.n] [輸出精度] <形式字母>
            (1)形式字母:制定輸出格式,如表
            d:十進(jìn)制整型數(shù)
            i:十進(jìn)制整型數(shù)
            x:十六進(jìn)制整型數(shù)
            o:八進(jìn)制整型數(shù)
            u:無符號(hào)十進(jìn)制整型數(shù)
            c:單個(gè)字符;
            s:字符串
            e:指數(shù)形式的浮點(diǎn)數(shù)
            f:小數(shù)形式的浮點(diǎn)數(shù)
            g:e和f中比較短的一種
            p:顯示變量所在的內(nèi)存地址
            n:它不是向printf()傳遞格式化信息,而是令printf()把自己已經(jīng)輸出的字符總數(shù)放到相應(yīng)變?cè)?br />的整形變量中
            %:符號(hào)%本身;
            (2):輸出精度如果形式字母是d,x,o.u,則可以指定如下兩類精度
            l:long型輸出精度
            h:short型輸出精度
            默認(rèn)時(shí)為int型精度
            如:long x=123454578;printf("%d",x);
            如果形式字母為e,f,g的時(shí)候,則指定l的 時(shí)候?yàn)閐ouble精度,不指定為float精度;
            (3):m[.n]指定輸出長(zhǎng)度,如果輸出的是實(shí)例,則m表示該項(xiàng)輸出占用字符位置的總長(zhǎng)度,n表示小數(shù)部分的字

            符長(zhǎng)度,如float x=4.56;printf("%7.4f",x);
            (4)0:指定不被使用的空位置填寫0,入股不指定使用0,則不使用的位置為空白.該項(xiàng)僅僅對(duì)樹枝輸出時(shí)才可

            以指定,對(duì)字符串輸出不用指定.例如
            int x=234;
            printf("%05d",x);//00234
            printf("%5d",x);//**234
            (5)[+][-]:指定輸出位置,如果指定+或者缺省時(shí)為右對(duì)齊,如果為"-"的時(shí)候?yàn)樽髮?duì)齊;


            ——————————————————————————————————————————————————————————————————————————
            posted on 2013-04-28 12:03 聶文龍 閱讀(2891) 評(píng)論(0)  編輯 收藏 引用

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


            久久亚洲私人国产精品vA | 久久www免费人成看国产片| 久久综合久久美利坚合众国| 久久久精品国产Sm最大网站| 国产激情久久久久影院老熟女免费| 久久久久亚洲精品无码蜜桃| 伊人久久大香线蕉综合影院首页| 亚洲美日韩Av中文字幕无码久久久妻妇| 国内精品伊人久久久久网站| 国产精品va久久久久久久| 国产精品99久久久久久宅男| 国产AⅤ精品一区二区三区久久| 亚洲一区中文字幕久久| 91精品观看91久久久久久 | 99久久精品国产毛片| 久久综合九色综合久99| 国产99久久久国产精免费| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 久久精品国产99国产精品澳门| 久久婷婷五月综合97色| 色综合久久久久无码专区| 久久久久人妻精品一区二区三区| 久久99久久99精品免视看动漫| 国产欧美一区二区久久| 国产免费久久精品99久久| 亚洲国产成人久久综合野外| 亚洲日韩中文无码久久| 91精品国产高清91久久久久久| 国产精品一区二区久久精品| 久久精品国产亚洲5555| 久久久久久久久66精品片| 亚洲AV无码1区2区久久| 91久久精品国产免费直播| 欧美精品丝袜久久久中文字幕| 久久亚洲sm情趣捆绑调教| 久久久久人妻精品一区二区三区| 久久综合九色综合久99| 欧美精品国产综合久久| 久久久精品午夜免费不卡| 一97日本道伊人久久综合影院| 久久A级毛片免费观看|