• <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>

            積木

            No sub title

              C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
              140 Posts :: 1 Stories :: 11 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(1)

            我參與的團(tuán)隊(duì)

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            #

            文章轉(zhuǎn)自:http://blog.sina.com.cn/s/blog_69e905cd0100ks5v.html

            第一種方法:

             TiXmlDocument *pDoc=new TiXmlDocument; //定義一個(gè)文檔的指針
             
            //添加一個(gè)xml頭。
             TiXmlDeclaration *pDeclaration=new TiXmlDeclaration("1.0","UTF-8","");
             pDoc->LinkEndChild(pDeclaration);
             //添加XMl的根節(jié)點(diǎn)
             TiXmlElement *lengquan= new TiXmlElement("lengquan");
             pDoc->LinkEndChild(lengquan);
             //添加一個(gè)父節(jié)點(diǎn)
             TiXmlNode *parent= new TiXmlElement("qiu");
             TiXmlNode* name4NewNode = new TiXmlElement("name");
             parent->InsertEndChild(*name4NewNode)->InsertEndChild(TiXmlText("pipi")); 
             TiXmlNode* addr4NewNode = new TiXmlElement("addr");
             parent->InsertEndChild(*addr4NewNode)->InsertEndChild(TiXmlText("Shaanxi Xianyang"));
             TiXmlNode* tel4NewNode = new TiXmlElement("tel");
             parent->InsertEndChild(*tel4NewNode)->InsertEndChild(TiXmlText("02937310627"));
             TiXmlNode* email4NewNode = new TiXmlElement("email");
             parent->InsertEndChild(*email4NewNode)->InsertEndChild(TiXmlText(lengshijie@163.com));
             lengquan->InsertEndChild(*parent);   


             pDoc->SaveFile("lengquan.xml");

            第二種方法:

            // TODO: Add your control notification handler code here
             TiXmlDocument *pDoc=new TiXmlDocument; //定義一個(gè)文檔的指針
             
            //添加一個(gè)xml頭。
             TiXmlDeclaration *pDeclaration=new TiXmlDeclaration("1.0","UTF-8","");
             pDoc->LinkEndChild(pDeclaration);
             //添加XMl的根節(jié)點(diǎn)
             TiXmlElement *lengquan= new TiXmlElement("lengquan");
             pDoc->LinkEndChild(lengquan);
             //添加xml父節(jié)點(diǎn),其實(shí)父節(jié)點(diǎn)跟子節(jié)點(diǎn)一樣,這里為了我自己明白的更清楚一點(diǎn),所以我自己稱根節(jié)點(diǎn)的下一結(jié)點(diǎn)為父節(jié)點(diǎn)。
             TiXmlElement *parent=new TiXmlElement("qiu");
             lengquan->LinkEndChild(parent);
             //添加屬性
             parent->SetAttribute("time","12:10");

             //添加子節(jié)點(diǎn)。
             TiXmlElement *name4NewNode=new TiXmlElement("name");
             parent->LinkEndChild(name4NewNode);
             //添加節(jié)點(diǎn)下文本
             CString strName="pipi";
             TiXmlText *pNameValue=new TiXmlText(strName);
             name4NewNode->LinkEndChild(pNameValue);
             
             //
             TiXmlElement* addr4NewNode=new TiXmlElement("addr");
             parent->LinkEndChild(addr4NewNode);

             CString strAddr="Shaanxi Xianyang";
             TiXmlText *pAddrValue=new TiXmlText(strAddr);
             parent->LinkEndChild(pAddrValue);
             //
             TiXmlElement* tel4NewNode=new TiXmlElement("tel");
             parent->LinkEndChild(tel4NewNode);

             CString strTel="02937310627";
             TiXmlText *pTelValue=new TiXmlText(strTel);
             parent->LinkEndChild(pTelValue);

             //保存
             pDoc->SaveFile("lengquan1.xml");

             

            相對(duì)而言我更趨向于第二種寫法。
            posted @ 2014-03-24 17:59 Jacc.Kim 閱讀(760) | 評(píng)論 (0)編輯 收藏

            文章轉(zhuǎn)自:http://blogger.org.cn/blog/more.asp?name=hongrui&id=28011
            windows平臺(tái)下使用vc或gcc
            函數(shù)名: access
            功  能: 確定文件的訪問權(quán)限
            用  法: 
            int access(const char *filename, int amode); 文件的話還可以檢測讀寫權(quán)限,文件夾的話則只能判斷是否存在
            #include 
            "stdafx.h"
            #include  
            <io.h>
            #include  
            <stdio.h>
            #include  
            <stdlib.h>

            void main( void )
            {
               
            /* Check for exist */
               
            if( (_access( "C:\\windows"0 )) != -1 )
               {
                  printf( 
            "windows exists " );
                 
                  
               }
            }
            其實(shí)判斷文件存在fopen就行了。
            linux下或者gcc下
            #include 
            <stdio.h>
            #include 
            <stdlib.h>

            #include 
            <dirent.h>
            #include 
            <unistd.h>
            void main( void )
            {
             DIR 
            *dir = NULL;
                 
            /* Open the given directory, if you can. */  
                dir 
            = opendir( "C:\\windows" );
                 
            if( dir != NULL ) {
                     printf( 
            "Error opening " );
                     
            return ;
                 }
            }
            opendir() 返回的 DIR 指針與 fopen() 返回的 FILE 指針類似,它是一個(gè)用于跟蹤目錄流的操作系統(tǒng)特定的對(duì)象。
            使用c
            ++標(biāo)準(zhǔn)庫
            #include 
            "stdafx.h"
            #include 
            <iostream>
            #include 
            <fstream>
            using namespace std;
            #define FILENAME  "C:\\windows"
            int main()
            {
                 fstream file;
                 file.open(FILENAME,ios::
            in);
                 
            if(!file)
                 {
                     cout
            <<FILENAME<<"存在";
                  }
                  
            else
                  {
                      cout
            <<FILENAME<<"不存在";
                  }
                  
            return 0;
            }
            gcc編譯去掉#include 
            "stdafx.h"即可
            使用Windows API PathFileExists

            #include 
            "stdafx.h"
            #include 
            <iostream>
            #include 
            <windows.h>
            #include 
            <shlwapi.h>
            #pragma   comment(lib,
            "shlwapi.lib"
            using namespace std;
            #define FILENAME  "C:\\windows"
            int main()
            {
                  
            if (::PathFileExists(FILENAME))
                   cout
            <<"exist";
                
            return 0;
            }

            注意windows.h 一定要在shlwapi.h前面定義
            使用boost的filesystem類庫的exists函數(shù):

            #include 
            <boost/filesystem/operations.hpp>
            #include 
            <boost/filesystem/path.hpp>
            #include 
            <boost/filesystem/convenience.hpp>

            int GetFilePath(std::string &strFilePath)
            {
                
            string strPath;
                
            int nRes = 0;

                
            //指定路徑

                strPath 
            = "D:\myTest\Test1\Test2";
                
            namespace fs = boost::filesystem;

                
            //路徑的可移植

                fs::path full_path( fs::initial_path() );
                full_path 
            = fs::system_complete( fs::path(strPath, fs::native ) );
                
            //判斷各級(jí)子目錄是否存在,不存在則需要?jiǎng)?chuàng)建

                
            if ( !fs::exists( full_path ) )
                {
                    
            // 創(chuàng)建多層子目錄

                    
            bool bRet = fs::create_directories(full_path);
                    
            if (false == bRet)
                    {
                        
            return -1;
                    }

                }
                strFilePath 
            = full_path.native_directory_string();

                
            return 0;
            }


            posted @ 2014-03-23 21:27 Jacc.Kim 閱讀(3502) | 評(píng)論 (0)編輯 收藏

            1) 首先需要有andorid sdk包,因?yàn)槔锩嬗衋db工具。同時(shí)建議將adb工具所在的目錄添加到系統(tǒng)環(huán)境變量中。
            2) 將設(shè)備連接到電腦上。
            3) 將dump_syms傳入設(shè)備上。命令:adb push xxxxxxxx\xxxx\dump_syms /data/local/tmp
            4) 將.so文件傳入設(shè)備上。命令:adb push xxxx\xxxx\xxx.so /sdcard/libgame.so
            5) 將dump_syms文件置為可讀寫。命令:chmod 0777 /data/local/tmp/dump_syms
            6) 用dump_syms解析.so文件。命令:
                  adb shell
                  cd /data/local/tmp
                  ./dump_syms /sdcard/libgame.so > /sdcard/libgame.so.sym
                  exit
            7) 將解析出來的符號(hào)文件提取出來。命令:adb pull /sdcard/libgame.so.sym xxxx\xxxx
            8) 用ue等工具,將提取出來的符號(hào)文件打開,里面有指紋識(shí)別信息。以此指紋信息建立目錄。然后將該符號(hào)文件放在該目錄下。最后再將該目錄放到libgame.so目錄下
            9) 用解析出來的符號(hào)文件,將相關(guān)的dump文件解析出來。命令:minidump_stackwalk.exe 6b4f6cbf-c474-eb78-68ee3e30-3f77c3ba.dmp D:\symbols > D:\dump\6b4f6cbf-c474-eb78-68ee3e30-3f77c3ba.dmp.txt
            posted @ 2014-01-29 17:42 Jacc.Kim 閱讀(3189) | 評(píng)論 (0)編輯 收藏

            原諒轉(zhuǎn)自:

            該文章介紹的不錯(cuò),值得收藏。

            最近有一些朋友常問我一些亂碼的問題,和他們交流過程中,發(fā)現(xiàn)這個(gè)編碼的相關(guān)知識(shí)還真是雜亂不堪,不少人對(duì)一些

            知識(shí)理解似乎也有些偏差,網(wǎng)上百度,google的內(nèi)容,也有不少以訛傳訛,根本就是錯(cuò)誤的(例如說 unicode編碼是兩

            個(gè)字節(jié)),各種軟件讓你選擇編碼的時(shí)候,常常是很長的一個(gè)選單,讓用戶不知道該如何選。基于這樣的問題,我就寫

            下我的理解吧,一方面幫助一些需要幫助的人糾正認(rèn)識(shí),一方面作為自己以后備查的資料。

            1.ASCII(American Standard Code for Information Interchange)
              美國信息交換標(biāo)準(zhǔn)代碼,這是計(jì)算機(jī)上最早使用的通用的編碼方案。那個(gè)時(shí)候計(jì)算機(jī)還只是拉丁文字的專利,根本沒

            有想到現(xiàn)在計(jì)算機(jī)的發(fā)展勢頭,如果想到了,可能一開始就會(huì)使用unicode了。當(dāng)時(shí)絕大部分專家都認(rèn)為,要用計(jì)算機(jī)

            ,必須熟練掌握英文。這種編碼占用7個(gè)Bit,在計(jì)算機(jī)中占用一個(gè)字節(jié),8位,最高位沒用,通訊的時(shí)候有時(shí)用作奇偶

            校驗(yàn)位。因此ASCII編碼的取值范圍實(shí)際上是:0x00-0x7f,只能表示128個(gè)字符。后來發(fā)現(xiàn)128個(gè)不太夠用,做了擴(kuò)展,

            叫做ASCII擴(kuò)展編碼,用足八位,取值范圍變成:0x00-0xff,能表示256個(gè)字符。其實(shí)這種擴(kuò)展意義不大,因?yàn)?56個(gè)字

            符表示一些非拉丁文字遠(yuǎn)遠(yuǎn)不夠,但是表示拉丁文字,又用不完。所以擴(kuò)展的意義還是為了下面的ANSI編碼服務(wù)。

            2.ANSI(American National Standard Institite )
              美國國家標(biāo)準(zhǔn)協(xié)會(huì),也就是說,每個(gè)國家(非拉丁語系國家)自己制定自己的文字的編碼規(guī)則,并得到了ANSI認(rèn)可,

            符合ANSI的標(biāo)準(zhǔn),全世界在表示對(duì)應(yīng)國家文字的時(shí)候都通用這種編碼就叫ANSI編碼。換句話說,中國的ANSI編碼和在日

            本的ANSI的意思是不一樣的,因?yàn)槎即碜约簢业奈淖志幋a標(biāo)準(zhǔn)。比如中國的ANSI對(duì)應(yīng)就是GB2312標(biāo)準(zhǔn),日本就是

            JIT標(biāo)準(zhǔn),香港,臺(tái)灣對(duì)應(yīng)的是BIG5標(biāo)準(zhǔn)等等。當(dāng)然這個(gè)問題也比較復(fù)雜,微軟從95開始,用就是自己搞的一個(gè)標(biāo)準(zhǔn)GBK

            。GB2312里面只有6763個(gè)漢字,682個(gè)符號(hào),所以確實(shí)有時(shí)候不是很夠用。GBK一直能和GB2312相互混淆并且相安無事的
            一個(gè)重要原因是GBK全面兼容GB2312,所以沒有出現(xiàn)任何沖突,你用GB2312編碼的文件通過GBK去解釋一定能獲得相同的

            顯示效果,換句話說:GBK對(duì)GB2312就是,你有的,我也有,你沒得的,我還有!


            好了,ANSI的標(biāo)準(zhǔn)是什么呢,首先是ASCII的代碼你不能用!也就是說ASCII碼在任何ANSI中應(yīng)該都是相同的。其他的,

            你們自己擴(kuò)展。所以呢,中國人就把ASCII碼變成8位,0x7f之前我不動(dòng)你的,我從0xa0開始編,0xa0到0xff才95個(gè)碼位

            ,對(duì)于中國字那簡直是杯水車薪,因此,就用兩個(gè)字節(jié)吧,因此編碼范圍就從0xA1A1 - 0xFEFE,這個(gè)范圍可以表示

            23901個(gè)漢字。基本夠用了吧,GB2312才7000多個(gè)呢!GBK更猛,編碼范圍是從0x8140 - 0xFEFE,可以表示3萬多個(gè)漢字

            。可以看出,這兩種方案,都能保證漢字頭一個(gè)字節(jié)在0x7f以上,從而和ASCII不會(huì)發(fā)生沖突。能夠?qū)崿F(xiàn)英文和漢字同

            時(shí)顯示。
            BIG5,香港和臺(tái)灣用的比較多,繁體,范圍: 0xA140 - 0xF9FE, 0xA1A1 - 0xF9FE,每個(gè)字由兩個(gè)字節(jié)組成,其第一

            字節(jié)編碼范圍為0xA1~0xF9,第二字節(jié)編碼范圍為0x40-0x7E與0xA1-0xFE,總計(jì)收入13868個(gè)字 (包括5401個(gè)常用字、

            7652 個(gè)次常用字、7個(gè)擴(kuò)充字、以及808個(gè)各式符號(hào))。


            那么到底ANSI是多少位呢?這個(gè)不一定!比如在GB2312和GBK,BIG5中,是兩位!但是其他標(biāo)準(zhǔn)或者其他語言如果不夠

            用,就完全可能不止兩位!

            例如:GB18030:
            GB18030-2000(GBK2K)在GBK的基礎(chǔ)上進(jìn)一步擴(kuò)展了漢字,增加了藏、蒙等少數(shù)民族的字形。GBK2K從根本上解決了字位

            不夠,字形不足的問題。它有幾個(gè)特點(diǎn):它并沒有確定所有的字形,只是規(guī)定了編碼范圍,留待以后擴(kuò)充。
            編碼是變長的,其二字節(jié)部分與GBK兼容;四字節(jié)部分是擴(kuò)充的字形、字位,其編碼范圍是首字節(jié)0x81-0xfe、二字節(jié)

            0x30-0x39、三字節(jié)0x81-0xfe、四字節(jié)0x30-0x39。它的推廣是分階段的,首先要求實(shí)現(xiàn)的是能夠完全映射到

            Unicode3.0標(biāo)準(zhǔn)的所有字形。它是國家標(biāo)準(zhǔn),是強(qiáng)制性的。

            搞懂了ANSI的含義,我們發(fā)現(xiàn)ANSI有個(gè)致命的缺陷,就是每個(gè)標(biāo)準(zhǔn)是各自為陣的,不保證能兼容。換句話說,要同時(shí)顯

            示中文和日本文或者阿拉伯文,就完全可能會(huì)出現(xiàn)一個(gè)編碼兩個(gè)字符集里面都有對(duì)應(yīng),不知道該顯示哪一個(gè)的問題,也

            就是編碼重疊的問題。顯然這樣的方案不好,所以Unicode才會(huì)出現(xiàn)!

            3.MBCS(Multi-Byte Chactacter System(Set))
              多字節(jié)字符系統(tǒng)或者字符集,基于ANSI編碼的原理上,對(duì)一個(gè)字符的表示實(shí)際上無法確定他需要占用幾個(gè)字節(jié)的,只

            能從編碼本身來區(qū)分和解釋。因此計(jì)算機(jī)在存儲(chǔ)的時(shí)候,就是采用多字節(jié)存儲(chǔ)的形式。也就是你需要幾個(gè)字節(jié)我給你放

            幾個(gè)字節(jié),比如A我給你放一個(gè)字節(jié),比如"中“,我就給你放兩個(gè)字節(jié),這樣的字符表示形式就是MBCS。
            在基于GBK的windows中,不會(huì)超過2個(gè)字節(jié),所以windows這種表示形式有叫做DBCS(Double-Byte Chactacter System

            ),其實(shí)算是MBCS的一個(gè)特例。
            C語言默認(rèn)存放字符串就是用的MBCS格式。從原理上來說,這樣是非常經(jīng)濟(jì)的一種方式。
            4.CodePage
              
            代碼頁,最早來自IBM,后來被微軟,oracle ,SAP等廣泛采用。因?yàn)锳NSI編碼每個(gè)國家都不統(tǒng)一,不兼容,可能導(dǎo)致沖

            突,所以一個(gè)系統(tǒng)在處理文字的時(shí)候,必須要告訴計(jì)算機(jī)你的ANSI是哪個(gè)國家和地區(qū)的標(biāo)準(zhǔn),這種國家和標(biāo)準(zhǔn)的代號(hào)(

            其實(shí)就是字符編碼格式的代號(hào)),微軟稱為Codepage代碼頁,其實(shí)這個(gè)代碼頁和字符集編碼的意思是一樣的。告訴你代

            碼頁,本質(zhì)就是告訴了你編碼格式。
            但是不同廠家的代碼頁可能是完全不同,哪怕是同樣的編碼,比如, UTF-8字符編碼 在IBM對(duì)應(yīng)的代碼頁是1208,在微

            軟對(duì)應(yīng)的是65001,在德國的SAP公司對(duì)應(yīng)的是 4110 。所以啊,其實(shí)本來就是一個(gè)東西,大家各自為政,搞那么多新名

            詞,實(shí)在沒必要!所以標(biāo)準(zhǔn)還是很重要的!!!
            比如GBK的在微軟的代碼頁是936,告訴你代碼頁是936其實(shí)和告訴你我編碼格式是GBK效果完全相同。那么處理文本的時(shí)

            候就不會(huì)有問題,不會(huì)去考慮某個(gè)代碼是顯示的韓文還是中文,同樣,日文和韓文的代碼頁就和中文不同,這樣就可以

            避免編碼沖突導(dǎo)致計(jì)算機(jī)不知如何處理的問題。當(dāng)然用這個(gè)也可以很容易的切換語言版本。
            但是這都是治標(biāo)不治本的方法,還是無法解決同時(shí)顯示多種語言的問題,所以最后還是都用unicode吧,永遠(yuǎn)不會(huì)有沖

            突了。
            5.Unicode(Universal Code)
              這是一個(gè)編碼方案,說白了就是一張包含全世界所有文字的一個(gè)編碼表,不管你用的上,用不上,不管是現(xiàn)在用的,

            還是以前用過的,只要這個(gè)世界上存在的文字符號(hào),統(tǒng)統(tǒng)給你一個(gè)唯一的編碼,這樣就不可能有任何沖突了。不管你要

            同時(shí)顯示任何文字,都沒有問題。
              因此在這樣的方案下,Unicode出現(xiàn)了。Unicode編碼范圍是:0-0x10FFFF,可以容納1114112個(gè)字符,100多萬啊。全

            世界的字符根本用不完了,Unicode 5.0版本中,才用了238605個(gè)碼位。所以足夠了。
            因此從碼位范圍看,嚴(yán)格的unicode需要3個(gè)字節(jié)來存儲(chǔ)。但是考慮到理解性和計(jì)算機(jī)處理的方便性,理論上還是用4個(gè)

            字節(jié)來描述。
               Unicode采用的漢字相關(guān)編碼用的是《CJK統(tǒng)一漢字編碼字符集》— 國家標(biāo)準(zhǔn) GB13000.1 是完全等同于國際標(biāo)準(zhǔn)《

            通用多八位編碼字符集 (UCS)》 ISO 10646.1。《GB13000.1》中最重要的也經(jīng)常被采用的是其雙字節(jié)形式的基本多文

            種平面。在這65536個(gè)碼位的空間中,定義了幾乎所有國家或地區(qū)的語言文字和符號(hào)。其中從0x4E00到 0x9FA5 的連續(xù)

            區(qū)域包含了 20902 個(gè)來自中國(包括臺(tái)灣)、日本、韓國的漢字,稱為 CJK (Chinese Japanese Korean) 漢字。CJK

            是《GB2312-80》、《BIG5》等字符集的超集。
              CJK包含了中國,日本,韓國,越南,香港,也就是CJKVH。這個(gè)在UNICODE的Charset chart中可以明顯看到。
              unicode的相關(guān)標(biāo)準(zhǔn)可以從unicode.org上面獲得,目前已經(jīng)進(jìn)行到了6.0版本。

            下面這段描述來自百度百科:
               Unicode字符集可以簡寫為UCS(Unicode Character Set)。早期的  unicodeUnicode標(biāo)準(zhǔn)有UCS-2、UCS-4的說法。

            UCS-2用兩個(gè)字節(jié)編碼,UCS-4用4個(gè)字節(jié)編碼。UCS-4根據(jù)最高位為0的最高字節(jié)分成2^7=128個(gè)group。每個(gè)group再根據(jù)

            次高字節(jié)分為256個(gè)平面(plane)。每個(gè)平面根據(jù)第3個(gè)字節(jié)分為256行 (row),每行有256個(gè)碼位(cell)。group 0

            的平面0被稱作BMP(Basic Multilingual Plane)。將UCS-4的BMP去掉前面的兩個(gè)零字節(jié)就得到了UCS-2。   每個(gè)平

            面有2^16=65536個(gè)碼位。Unicode計(jì)劃使用了17個(gè)平面,一共有17*65536=1114112個(gè)碼位。在Unicode 5.0.0版本中,已

            定義的碼位只有238605個(gè),分布在平面0、平面1、平面2、平面14、平面15、平面16。其中平面15和平面16上只是定義

            了兩個(gè)各占65534個(gè)碼位的專用區(qū)(Private Use Area),分別是0xF0000-0xFFFFD和0x100000-0x10FFFD。所謂專用區(qū)

            ,就是保留給大家放自定義字符的區(qū)域,可以簡寫為PUA。   平面0也有一個(gè)專用區(qū):0xE000-0xF8FF,有6400個(gè)碼位

            。平面0的0xD800-0xDFFF,共2048個(gè)碼位,是一個(gè)被稱作代理區(qū)(Surrogate)的特殊區(qū)域。代理區(qū)的目的用兩個(gè)UTF-

            16字符表示BMP以外的字符。在介紹UTF-16編碼時(shí)會(huì)介紹。   如前所述在Unicode 5.0.0版本中,238605-65534*2-

            6400-2408=99089。余下的99089個(gè)已定義碼位分布在平面0、平面1、平面2和平面14上,它們對(duì)應(yīng)著Unicode目前定義的

            99089個(gè)字符,其中包括71226個(gè)漢字。平面0、平面1、平面2和平面14上分別定義了52080、3419、43253和337個(gè)字符。

            平面2的43253個(gè)字符都是漢字。平面0上定義了27973個(gè)漢字。
             

            6.Unicode的實(shí)現(xiàn)方案
               Unicode其實(shí)只是一張巨大的編碼表。要在計(jì)算機(jī)里面實(shí)現(xiàn),也出現(xiàn)了幾種不同的方案。也就是說如何表示unicode

            編碼的問題。
            (1)UTF-8(UCS Transformation Format 8bit)
                這個(gè)方案的意思以8位為單位來標(biāo)識(shí)文字,注意并不是說一個(gè)文字用8位標(biāo)識(shí)。他其實(shí)是一種MBCS方案,可變字節(jié)的

            。到底需要幾個(gè)字節(jié)表示一個(gè)符號(hào),這個(gè)要根據(jù)這個(gè)符號(hào)的unicode編碼來決定,最多4個(gè)字節(jié)。
            編碼規(guī)則如下:
               Unicode編碼(16進(jìn)制) ║ UTF-8 字節(jié)流(二進(jìn)制)  
             000000 - 00007F ║ 0xxxxxxx   
            000080 - 0007FF ║ 110xxxxx 10xxxxxx   
            000800 - 00FFFF ║ 1110xxxx 10xxxxxx 10xxxxxx   
            010000 - 10FFFF ║ 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx   
            UTF-8的特點(diǎn)是對(duì)不同范圍的字符使用不同長度的編碼。對(duì)于0x00-0x7F之間的字符,UTF-8編碼與ASCII編碼完全相同。

            UTF-8編碼的最大長度是4個(gè)字節(jié)。從上表可以看出,4字節(jié)模板有21個(gè)x,即可以容納21位二進(jìn)制數(shù)字。Unicode的最大

            碼位0x10FFFF也只有21位。   
            例1:“漢”字的Unicode編碼是0x6C49。0x6C49在0x0800-0xFFFF之間,使用用3字節(jié)模板了:1110xxxx 10xxxxxx

            10xxxxxx。將0x6C49寫成二進(jìn)制是:0110 1100 0100 1001, 用這個(gè)比特流依次代替模板中的x,得到:11100110

            10110001 10001001,即E6 B1 89。   
            例2:Unicode編碼0x20C30在0x010000-0x10FFFF之間,使用用4字節(jié)模板了:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx。

            將0x20C30寫成21位二進(jìn)制數(shù)字(不足21位就在前面補(bǔ)0):0 0010 0000 1100 0011 0000,用這個(gè)比特流依次代替模板

            中的x,得到:11110000 10100000 10110000 10110000,即F0 A0 B0 B0。

            (2)UTF-16
             UTF-16編碼以16位無符號(hào)整數(shù)為單位。注意是16位為一個(gè)單位,不表示一個(gè)字符就只有16位。現(xiàn)在機(jī)器上的unicode編

            碼一般指的就是UTF-16。絕大部分2個(gè)字節(jié)就夠了,但是不能絕對(duì)的說所有字符都是2個(gè)字節(jié)。這個(gè)要看字符的unicode

            編碼處于什么范圍而定,有可能是2個(gè)字節(jié),也可能是4個(gè)字節(jié)。這點(diǎn)請(qǐng)注意!
            下面算法解釋來自百度百科。

            我們把Unicode  unicode編碼記作U。編碼規(guī)則如下: 
              如果U<0x10000,U的UTF-16編碼就是U對(duì)應(yīng)的16位無符號(hào)整數(shù)(為書寫簡便,下文將16位無符號(hào)整數(shù)記作WORD)。

              如果U≥0x10000,我們先計(jì)算U'=U-0x10000,然后將U'寫成二進(jìn)制形式:yyyy yyyy yyxx xxxx xxxx,U的UTF-16

            編碼(二進(jìn)制)就是:110110yyyyyyyyyy 110111xxxxxxxxxx。為什么U'可以被寫成20個(gè)二進(jìn)制位?Unicode的最大碼位

            是0x10ffff,減去0x10000后,U'的最大值是0xfffff,所以肯定可以用20個(gè)二進(jìn)制位表示。
                例如:Unicode編碼0x20C30,減去0x10000后,得到0x10C30,寫成二進(jìn)制是:0001 0000 1100 0011 0000。用前10

            位依次替代模板中的y,用后10位依次替代模板中的x,就得到:1101100001000011 1101110000110000,即0xD843

            0xDC30。   
                按照上述規(guī)則,Unicode編碼0x10000-0x10FFFF的UTF-16編碼有兩個(gè)WORD,第一個(gè)WORD的高6位是110110,第二個(gè)

            WORD的高6位是110111。可見,第一個(gè)WORD的取值范圍(二進(jìn)制)是11011000 00000000到11011011 11111111,即

            0xD800-0xDBFF。第二個(gè)WORD的取值范圍(二進(jìn)制)是11011100 00000000到11011111 11111111,即0xDC00-0xDFFF。

              為了將一個(gè)WORD的UTF-16編碼與兩個(gè)WORD的UTF-16編碼區(qū)分開來,Unicode編碼的設(shè)計(jì)者將0xD800-0xDFFF保留下來

            ,并稱為代理區(qū)(Surrogate):   
            D800-DB7F ║ High Surrogates ║ 高位替代   
            DB80-DBFF ║ High Private Use Surrogates ║ 高位專用替代   
            DC00-DFFF ║ Low Surrogates ║ 低位替代   
               高位替代就是指這個(gè)范圍的碼位是兩個(gè)WORD的UTF-16編碼的第一個(gè)WORD。低位替代就是指這個(gè)范圍的碼位是兩個(gè)

            WORD的UTF-16編碼的第二個(gè)WORD。那么,高位專用替代是什么意思?我們來解答這個(gè)問題,順便看看怎么由UTF-16編碼

            推導(dǎo)Unicode編碼。   
              如果一個(gè)字符的UTF-16編碼的第一個(gè)WORD在0xDB80到0xDBFF之間,那么它的Unicode編碼在什么范圍內(nèi)?我們知道第

            二個(gè)WORD的取值范圍是0xDC00-0xDFFF,所以這個(gè)字符的UTF-16編碼范圍應(yīng)該是0xDB80 0xDC00到0xDBFF 0xDFFF。我們

            將這個(gè)范圍寫成二進(jìn)制:   1101101110000000 11011100 00000000 - 1101101111111111 1101111111111111   按

            照編碼的相反步驟,取出高低WORD的后10位,并拼在一起,得到   1110 0000 0000 0000 0000 - 1111 1111 1111

            1111 1111  
            即0xe0000-0xfffff,按照編碼的相反步驟再加上0x10000,得到0xf0000-0x10ffff。這就是UTF-16編碼的第一個(gè)WORD在

            0xdb80到0xdbff之間的Unicode編碼范圍,即平面15和平面16。因?yàn)閁nicode標(biāo)準(zhǔn)將平面15和平面16都作為專用區(qū),所以

            0xDB80到0xDBFF之間的保留碼位被稱作高位專用替代。

            (3)UTF-32
             這個(gè)就簡單了,和Unicode碼表基本一一對(duì)應(yīng),固定四個(gè)字節(jié)。
             為什么不采用UTF-32呢,因?yàn)閡nicode定義的范圍太大了,其實(shí)99%的人使用的字符編碼不會(huì)超過2個(gè)字節(jié),所以如同統(tǒng)

            一用4個(gè)字節(jié),簡單倒是簡單了,但是數(shù)據(jù)冗余確實(shí)太大了,不好,所以16位是最好的。就算遇到超過16位能表示的字

            符,我們也可以通過上面講到的代理技術(shù),采用32位標(biāo)識(shí),這樣的方案是最好的。所以現(xiàn)在絕大部分機(jī)器實(shí)現(xiàn)unicode

            還是采用的utf-16的方案。當(dāng)然也有UTF-8的方案。比如windows用的就是UTF16方案,不少linux用的就是utf8方案。

            7. 編碼存儲(chǔ)差異

            這里就要引出兩個(gè)名詞:
            LE(little endian):小字節(jié)字節(jié)序,意思就是一個(gè)單元在計(jì)算機(jī)中的存放時(shí)按照低位在前(低地址),高位在后(高

            地址)的模式存放。

            BE(big endian):大字節(jié)字節(jié)序,和LE相反,是高位在前,低位在后。

            比如一個(gè)unicode編碼為:0x006C49,如果是LE,那么在文件中的存放順序應(yīng)該是:49 6c 00
            如果是BE ,那么順序應(yīng)該是:00 6c 49

            8.編碼格式的檢測

            到底采用什么編碼,如果能檢測就好了。專家們也是這么想的,所以專家給每種格式和字節(jié)序規(guī)定了一些特殊的編碼,

            這些編碼在unicode 中是沒有使用的,所以不用擔(dān)心會(huì)沖突。

            這個(gè)叫做BOM(Byte Order Mark)頭。意思是字節(jié)序標(biāo)志頭。通過它基本能確定編碼格式和字節(jié)序。
            UTF編碼 ║ Byte Order Mark   
            UTF-8   ║ EF BB BF   
            UTF-16LE ║ FF FE   
            UTF-16BE ║ FE FF   
            UTF-32LE ║ FF FE 00 00   
            UTF-32BE ║ 00 00 FE FF
            所以通過檢測文件前面的BOM頭,基本能確定編碼格式和字節(jié)序。
            但是這個(gè)BOM頭只是建議添加,不是強(qiáng)制的,所以不少軟件和系統(tǒng)沒有添加這個(gè)BOM頭(所以有些軟件格式中有帶BOM頭

            和NoBOM頭的選擇),這個(gè)時(shí)候要檢測什么格式,就比較麻煩了
            當(dāng)然可以檢測,但是不能保證100%準(zhǔn)確,只能通過編碼范圍從概率上來檢查,雖然準(zhǔn)確度還是比較高,但是不能保證

            100%。所以,時(shí)常看到檢測錯(cuò)誤的軟件,也不奇怪了。

            總結(jié):
               終于寫完了,其實(shí)這些問題都是不統(tǒng)一導(dǎo)致的,屬于歷史問題,所以才會(huì)有這些困惑,這里也呼吁所有的軟件 開發(fā)

            人員自覺的采用Unicode標(biāo)準(zhǔn)進(jìn)行文字處理,我相信在不久的將來,這些困擾都不會(huì)存在了,因?yàn)樗熊浖际莡nicode

            d ,只要有字庫,任何文字都能同時(shí)顯示,也可以到任何語言的平臺(tái)上的去運(yùn)行,不再有亂碼的困惑!
              其實(shí)現(xiàn)在絕大部分軟件已經(jīng)是這么做的了!
               另外也不要被很多名詞屬于所迷惑,其實(shí)這些只是標(biāo)準(zhǔn)的問題,根本沒有什么新的東西,更沒有什么復(fù)雜的東西。

            posted @ 2013-12-26 18:57 Jacc.Kim 閱讀(513) | 評(píng)論 (0)編輯 收藏

            說明:以下僅為個(gè)人的搭建過程記錄摘要。按以下步驟搭建測試成功。參考鏈接有:
            0. 引導(dǎo)
                http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c42246121b30a8e16071405f8f90613441e9120db4a72b24604573ecc589954fdbb0922d288f33712d5cd04e418f4fef961d73d620e106bff60ee7cbe74290b9a5d1c82253dd24756d8081c3045b44&p=c2769a4786cc42a858b1d22454078b&newp=927f861a85cc43ff57ee937e4e55a5231610db2151d4db15&user=baidu&fm=sc&query=Android+NDK+%B1%E0%D2%EB+zlib&qid=&p1=7

                http://www.ityran.com/archives/3223

            1. cygwin環(huán)境搭建
                http://woniu1983.iteye.com/blog/1895724
                
                http://www.33lc.com/article/7276_4.html

            2. android sdk 環(huán)境搭建
                http://hi.baidu.com/j_key/item/bdfe28f6b1758ad56325d259

            3. jdk環(huán)境搭建.說明該點(diǎn)安裝很簡單。因此,沒有提供相關(guān)參考鏈接。

            4. android avd 環(huán)境搭建.(提示:該點(diǎn)為非本文相關(guān)功能介紹,可以不與理會(huì)。)
                http://shitou521.iteye.com/blog/1074593


            cocos2d-x android 環(huán)境搭建步驟:
            1. 下載ndk與cygwin安裝包。(都分別從官網(wǎng)可以下得最新免費(fèi)版本)

            2. 安裝cygwin。(可能需要挺長時(shí)間的)

            3. 配置ndk路徑。配置方法,可參考:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c42246121b30a8e16071405f8f90613441e9120db4a72b24604573ecc589954fdbb0922d288f33712d5cd04e418f4fef961d73d620e106bff60ee7cbe74290b9a5d1c82253dd24756d8081c3045b44&p=c2769a4786cc42a858b1d22454078b&newp=927f861a85cc43ff57ee937e4e55a5231610db2151d4db15&user=baidu&fm=sc&query=Android+NDK+%B1%E0%D2%EB+zlib&qid=&p1=7

            4. 下載jdk包。(從官網(wǎng)下載,該包也是免費(fèi)的)。下載完成后,直接安裝。

            5. 下載adt。可以從官網(wǎng)下載:adt-bundle。如:本人下載的:adt-bundle-windows-x86-20131030.zip。
            該包也是免費(fèi)的。該包中下載下來后,包含:eclips與android sdk兩個(gè)包。
            提示:如果下載的不是adt-bundle。則可能需要單獨(dú)下載eclips與android sdk安裝包。
            下載完成后,解壓到指定目錄。安裝android sdk。即:運(yùn)行SDK Manager.exe即可。(提示:安裝需要很長時(shí)間。。)

            6. 以上完成后,再下載cocos2d-x相關(guān)的sdk包。找到create-android-project.bat。按照:http://www.ityran.com/archives/3223 上說明的方法,修改其中的:set _CYGBIN 、set _ANDROIDTOOLS以及set _NDKROOT相關(guān)路徑。然后就可以有此bat創(chuàng)建自己的cocos2d-x java項(xiàng)目了。

            7. 在處理完上面的第6點(diǎn)后。可以用cygwin編譯項(xiàng)目。具體為:打開cygwin。然后轉(zhuǎn)到新生成的項(xiàng)目下,執(zhí)行: build_native.sh
            編完成后會(huì)生成相應(yīng)的.so。其實(shí)就是相當(dāng)于win下的lib或稱為dll吧。

            8. 完成7后,再打開eclips,將工程添加進(jìn)來。(記得也要添加cocos2d-x的工程。并優(yōu)先編譯它。因?yàn)槲覀兊捻?xiàng)目依賴于它)。編我們的項(xiàng)目,然后再將設(shè)備連上,Run As即可。至此,全部介紹結(jié)束。

            -------------------------------------------------------------------------------

            ndk下載后,直接解壓即可。
            cygwin安裝(需要很長時(shí)間)后,需要配置ndk的路徑
            adt就是android sdk。
            eclipse 正常來說,就已經(jīng)集成了jdk了。
            (ndk下載地址:官網(wǎng))
            (cygwin下載地址:官網(wǎng))
            (adt下載地址:官網(wǎng))
            (eclipse標(biāo)準(zhǔn)版下載地址:http://www.newasp.net/soft/69126.html)
            (jdk下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html)

             

            posted @ 2013-12-26 10:20 Jacc.Kim 閱讀(538) | 評(píng)論 (0)編輯 收藏

            原諒轉(zhuǎn)載自:http://woniu1983.iteye.com/blog/1895724

            之前一直嘗試配置Ubuntu下的環(huán)境的,我的Ubuntu12.04是VirtualBox虛擬機(jī)下的,整了半天,其他都好了,就是Eclipse下面安裝ADT的時(shí)候,發(fā)現(xiàn)Eclipse連不上網(wǎng)絡(luò),查過代理等都沒問題,于是本地安裝ADT,結(jié)果又是和網(wǎng)絡(luò)上的一樣的一堆錯(cuò)誤。 時(shí)間關(guān)系沒有整到底,于是還是使用大家通行的Cygwin來吧。 

            巴拉巴拉的介紹就不說了,直接記錄步驟吧。 



            1. Android NDK下載 
              下載Windows系統(tǒng)下的版本,至于32位還是64位由你機(jī)器而定,我的是Win7 32位,下載的是:android-ndk-r8e-windows-x86.zip 
              電梯直達(dá):http://developer.android.com/tools/sdk/ndk/index.html#Installing 
              

            2. Cygwin下載 
              下載Setup.exe 
              電梯直達(dá):http://cygwin.com/install.html 

            3. 安裝 Android NDK 
               解壓縮到某個(gè)目錄即可,例如我的: E:\DevelopEnviroment\Android\ 
               解壓縮后的文件夾名字如下:android-ndk-r8e 

            4. 安裝Cygwin 
               運(yùn)行Setup.exe,如下圖片是轉(zhuǎn)載自別人的(請(qǐng)見參考Link) 












            5. 運(yùn)行下Cygwin 
               第一次運(yùn)行后,會(huì)為你創(chuàng)建當(dāng)前的用戶包括一些環(huán)境文件(類似于Linux下的bash文件等等),下一步我們會(huì)修改其中的文件 

            6. 配置NDK環(huán)境變量 
               .cygwin的安裝目錄,找到一個(gè)home\<你的用戶名>\.bash_profile文件末尾添加如下: 
                其中“e/DevelopEnviroment/Android/android-ndk-r8e 
            ”是表示Android NDK是安裝在E:/DevelopEnviroment/Android/android-ndk-r8e 
            Shell代碼  收藏代碼
            1. ANDK=/cygdrive/e/DevelopEnviroment/Android/android-ndk-r8e  
            2. export ANDK  
                7. 測試NDK環(huán)境 
                   輸入 cd $ANDK, 進(jìn)入/cygdrive/e/DevelopEnviroment/Android/android-ndk-r8e 

                   進(jìn)入/samples/hello-jni項(xiàng)目下,運(yùn)行$ANDK/ndk-build 
                   輸出效果如下: 
                Output代碼  收藏代碼
                1. $ $ANDK/ndk-build  
                2. Gdbserver      : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver  
                3. Gdbsetup       : libs/armeabi/gdb.setup  
                4. Install        : libhello-jni.so => libs/armeabi/libhello-jni.so  


                   以上即表明安裝完畢。 

                  

                參考Link: http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c42246121b30a8e16071405f8f90613441e9120db4a72b24604573ecc589954fdbb0922d288f33712d5cd04e418f4fef961d73d620e106bff60ee7cbe74290b9a5d1c82253dd24756d8081c3045b44&p=c2769a4786cc42a858b1d22454078b&newp=927f861a85cc43ff57ee937e4e55a5231610db2151d4db15&user=baidu&fm=sc&query=Android+NDK+%B1%E0%D2%EB+zlib&qid=&p1=7

                http://wenku.baidu.com/view/63039e8071fe910ef12df86b.html
              posted @ 2013-12-23 16:10 Jacc.Kim 閱讀(528) | 評(píng)論 (0)編輯 收藏

              posted @ 2013-12-17 20:18 Jacc.Kim 閱讀(304) | 評(píng)論 (0)編輯 收藏

                   摘要: 原諒轉(zhuǎn)載自:http://www.cnblogs.com/skywang12345/p/3245399.html 紅黑樹(一) 原理和算法詳細(xì)介紹        作者:Sky Wang    于 2013-08-08                 &n...  閱讀全文
              posted @ 2013-12-08 16:54 Jacc.Kim 閱讀(650) | 評(píng)論 (0)編輯 收藏

              一個(gè)包含逗號(hào)的表達(dá)式首先計(jì)算逗號(hào)左邊的表達(dá)式,然后計(jì)算逗
              號(hào)右邊的表達(dá)式;整個(gè)表達(dá)式的結(jié)果是逗號(hào)右邊表達(dá)式的值。所以對(duì)于表達(dá)式:++i, --j;
              編譯器首先計(jì)算++i,然后是--j,逗號(hào)表達(dá)式的結(jié)果是--j。
              posted @ 2013-11-25 21:00 Jacc.Kim 閱讀(332) | 評(píng)論 (0)編輯 收藏

              1) 不論是 increment 或 decrement 的前綴還是后綴都只有一個(gè)參數(shù)。為了解決這個(gè)語言問題,C++
              規(guī)定后綴形式有一個(gè) int 類型參數(shù),當(dāng)函數(shù)被調(diào)用時(shí),編譯器傳遞一個(gè) 0 做為 int 參數(shù)的值
              給該函數(shù)(即:decrement函數(shù))。示例如下:
              /******************************************************************************
              @-Author  : Jacc.Kim
              @-create  : [11-25-2013 20:33:55]
              @-summary : c++的increment與decrement學(xué)習(xí)
              @-modified: 
              *****************************************************************************
              */
              class UPInt
              {
              public:
                  
              /**************************************************************************
                  @-summary : ++ 前遞增操作符重載
                  @-in param: 
                  @-return  : 
                  @-!!!note : 1) 該函數(shù)返回的是當(dāng)前對(duì)象自增后的引用。一定注意:是引用。
                  @-          2) 該函數(shù)沒有輸入?yún)?shù)
                  @-          3) 下面的 -- 前遞減操作符重載類似
                  *************************************************************************
              */
                  UPInt 
              &operator++() {
                      
              // 處理遞增操作
                      
              // 
                      
              // some code here ..
                      
              // 
                      
              // 返回自身實(shí)例
                      return *this;
                  }

                  
              /**************************************************************************
                  @-summary : ++ 后遞增操作符重載
                  @-in param: 
                  @-return  : 
                  @-!!!note : 1) 該函數(shù)返回的是當(dāng)前對(duì)象自增前的一個(gè)const副本。一定注意:是const副本。
                  @-          2) 該函數(shù)接受一個(gè)int型參數(shù),但實(shí)際上,該參數(shù)是沒有任何作用的。
                  @-          3) 下面的 -- 后遞減操作符重載類似
                  *************************************************************************
              */
                  
              const UPInt operator++(int) {
                      UPInt retObj 
              = *this;
                      
              ++(*this);
                      
              return retObj;
                  }

                  
              /**************************************************************************
                  @-summary : -- 前遞增操作符重載
                  @-in param: 
                  @-return  : 
                  @-!!!note : 1) 該函數(shù)返回的是當(dāng)前對(duì)象自減前的引用。一定注意:是引用。
                  @-          2) 該函數(shù)沒有輸入?yún)?shù)
                  *************************************************************************
              */
                  UPInt 
              &operator--() {
                      
              // 處理遞減操作
                      
              // 
                      
              // some code here ..
                      
              // 
                      
              // 返回自身實(shí)例
                      return *this;
                  }

                  
              /**************************************************************************
                  @-summary : ++ 后遞減操作符重載
                  @-in param: 
                  @-return  : 
                  @-!!!note : 1) 該函數(shù)返回的是當(dāng)前對(duì)象自減前的一個(gè)const副本。一定注意:是const副本。
                  @-          2) 該函數(shù)接受一個(gè)int型參數(shù),但實(shí)際上,該參數(shù)是沒有任何作用的。
                  *************************************************************************
              */
                  
              const UPInt operator--(int) {
                      UPInt retObj 
              = *this;
                      
              --(*this);
                      
              return retObj;
                  }

              public:
                  UPInt();
                  
              virtual ~UPInt();

              };
              //class UPInt

              /******************************************************************************
              @-summary : 示例使用UPInt的 ++ 與 -- 的前、后操作符重載
              @-in param: 
              @-return  : 
              *****************************************************************************
              */
              void testUPIntIncAndDecOperator() {
                  UPInt theObj;
                  
              ++theObj; // 調(diào)用 theObj.operator++(); 
                  theObj++// 調(diào)用 theObj.operator++(0);
                  --theObj; // 調(diào)用 theObj.operator--(); 
                  theObj--// 調(diào)用 theObj.operator--(0);
              }


              2) 為什么前綴與后綴的返回值會(huì)不同??
              答:一個(gè)后綴 increment 必須返回一個(gè)對(duì)象(它返回的是增加前的值),但是為什么
              是 const 對(duì)象呢?假設(shè)不是 const 對(duì)象,下面的代碼就是正確的:
              UPInt i;
              i++++; // 兩次 increment 后綴
              這組代碼與下面的代碼相同:
              i.operator++(0).operator++(0);
              很明顯,第一個(gè)調(diào)用的 operator++函數(shù)返回的對(duì)象調(diào)用了第二個(gè) operator++函數(shù)。
              有兩個(gè)理由導(dǎo)致我們應(yīng)該厭惡上述這種做法,第一是與內(nèi)置類型行為不一致。當(dāng)設(shè)計(jì)一
              個(gè)類遇到問題時(shí),一個(gè)好的準(zhǔn)則是使該類的行為與 int 類型一致。而 int 類型不允許連續(xù)進(jìn)
              行兩次后綴 increment:
              int i;
              i++++; // 錯(cuò)誤!
              第二個(gè)原因是使用兩次后綴 increment 所產(chǎn)生的結(jié)果與調(diào)用者期望的不一致。如上所
              示,第二次調(diào)用 operator++改變的值是第一次調(diào)用返回對(duì)象的值,而不是原始對(duì)象的值。
              因此如果:
              i++++;
              是合法的,i 將僅僅增加了一次。這與人的直覺相違背,使人迷惑(對(duì)于 int 類型和 UPInt
              都是一樣),所以最好禁止這么做。

              3) 同樣條件下,前綴比后綴操作符來的高效。
              posted @ 2013-11-25 20:50 Jacc.Kim 閱讀(754) | 評(píng)論 (0)編輯 收藏

              僅列出標(biāo)題
              共14頁: 1 2 3 4 5 6 7 8 9 Last 
              国产成人久久777777| 日本欧美国产精品第一页久久| 国内精品伊人久久久久影院对白| 热99RE久久精品这里都是精品免费 | 三级三级久久三级久久| 18岁日韩内射颜射午夜久久成人| 亚洲国产精品无码久久| 久久精品18| 精品久久香蕉国产线看观看亚洲| 久久这里只精品99re66| 国产一区二区精品久久岳| 亚洲AV无一区二区三区久久| 久久国产精品一区| 青青青国产成人久久111网站| 久久99精品国产麻豆宅宅| 久久久久亚洲AV综合波多野结衣 | 亚洲日韩中文无码久久| 久久无码人妻精品一区二区三区| 久久91精品国产91久久麻豆 | 色诱久久久久综合网ywww| 亚洲欧美国产精品专区久久 | 亚洲AV日韩精品久久久久久久| 日韩欧美亚洲综合久久影院Ds| 99久久国产综合精品成人影院| 国产午夜福利精品久久2021| 新狼窝色AV性久久久久久| 狠狠综合久久AV一区二区三区| 久久经典免费视频| 久久精品综合网| 亚洲午夜精品久久久久久浪潮 | 国产精品成人久久久久三级午夜电影 | 伊人久久大香线蕉成人| 婷婷久久综合九色综合九七| 久久久精品波多野结衣| 日本亚洲色大成网站WWW久久 | 久久精品国产亚洲av麻豆小说| 久久久久久精品成人免费图片| 国内精品伊人久久久影院| 99久久香蕉国产线看观香| 国产亚洲精品久久久久秋霞| 97精品依人久久久大香线蕉97|