字元陣列與字串 - OpenHome.cc

文章推薦指數: 80 %
投票人數:10人

字串就是一串文字,在C++ 談到字串的話,一個意義是指字元組成的陣列,最後加上一個空(null)字元 '\0' ,例如底下是個 "hello" 字串: char text[] = {'h', 'e', ... 回C++目錄 字串就是一串文字,在C++談到字串的話,一個意義是指字元組成的陣列,最後加上一個空(null)字元'\0',例如底下是個"hello"字串: chartext[]={'h','e','l','l','o','\0'}; 之後可以直接使用text來代表"hello"文字,例如: cout< usingnamespacestd; intmain(){ chartext[]="hello"; for(autoch:text){ if(ch=='\0'){ cout< #include usingnamespacestd; intmain(){ wchar_ttext[]=L"良葛格"; cout< usingnamespacestd; stringtoUTF8(intcp); inttoCodePoint(conststring&u); intmain(intargc,char*argv[]){ //在UTF-8終端機下會顯示「林」 cout<>6)+192; ch[1]=(cp&63)+128; } elseif(0xd800<=cp&&cp<=0xdfff){}//無效區塊 elseif(cp<=0xFFFF){ ch[0]=(cp>>12)+224; ch[1]=((cp>>6)&63)+128; ch[2]=(cp&63)+128; } elseif(cp<=0x10FFFF){ ch[0]=(cp>>18)+240; ch[1]=((cp>>12)&63)+128; ch[2]=((cp>>6)&63)+128; ch[3]=(cp&63)+128; } returnstring(ch); } inttoCodePoint(conststring&u){ intl=u.length(); if(l<1){ return-1; } unsignedcharu0=u[0]; if(u0>=0&&u0<=127){ returnu0; } if(l<2){ return-1; } unsignedcharu1=u[1]; if(u0>=192&&u0<=223){ return(u0-192)*64+(u1-128); } if(u[0]==0xed&&(u[1]&0xa0)==0xa0){ return-1;//codepoints,0xd800to0xdfff } if(l<3){ return-1; } unsignedcharu2=u[2]; if(u0>=224&&u0<=239){ return(u0-224)*4096+(u1-128)*64+(u2-128); } if(l<4){ return-1; } unsignedcharu3=u[3]; if(u0>=240&&u0<=247){ return(u0-240)*262144+(u1-128)*4096+(u2-128)*64+(u3-128); } return-1; } string是C++建議使用的字串型態,也有一些現有的程式庫,可以提供編碼轉換,這之後會介紹。

若字串中包含\、"等字元,會需要轉義,例如: chartext[]="c:\\workspace\\exercise"; C++11後可以使用原始字串常量R"(...)"的寫法,在括號中的文字無需轉義,也可以直接撰寫",例如: chartext1[]=R"(c:\workspace\exercise)"; chartext2[]=R"(Thisisa"test")"; 也可以進行換行: #include usingnamespacestd; intmain(){ chartext[]=R"(Yourleftbrainhasnothingright. Yourrightbrainhasnothingleft.)"; cout<



請為這篇文章評分?