/ / / / / /

上一篇 下一篇 同標題 發表文章 文章列表

作者  weihan (天天天藍) 站內  CPP_DS
標題  Re: 有關於 unicode 內的字
時間  2013/03/07 Thu 16:03:19

※ 引述《weihan (天天天藍)》之銘言:
> 有點好奇 unicode 內的字符要如何印出來,於是就寫個程式印出來。
> 以下為程式碼:
>     locale  utf8("zh_TW.UTF-8") ;
>     setlocale(LC_ALL,"zh_TW.UTF-8") ;
>     for ( int i = 32 ; i <= 65535 ; ++i ) {
>         if ( i%50 == 0 ) wcout << setw(5) << i << " " ;
>         wcout << *reinterpret_cast<wchar_t*>(&i) << " "  ;
>         if ( (i+1)%50 ==0 ) wcout << endl ;
>     }
> 輸出時以每50個字符為一列,但由於終端機螢幕的字型沒有所有的
> 字符,所以會出現許多方框。
> 以上 *reinterpret_cast<wchar_t*>(&i) 是將整數 i 位址『看成』
> 是 wchar_t 型別的位址,然後使用 * 印出其內容,滿有趣的。
> 這是我第一次使用 reinterpret_cast 用在非 binary 輸出/輸入
> 的工作上。

如果要將某個字在 unicode 上的位置印出來,也可以這樣做:

wstring  foo = L"漢皇重色思傾國,御宇多年求不得。" ;

for ( i = 0 ; i < foo.size() ; ++i ) {
    wcout << foo[i] << L" " << *reinterpret_cast<int*>(&foo[i]) << endl ;
}

輸出:

漢 28450
皇 30343
重 37325
色 33394
思 24605
傾 20670
國 22283
, 65292
御 24481
宇 23431
多 22810
年 24180
求 27714
不 19981
得 24471
。 12290


--
===================================================================
*               人生的意義 : 盡責任  負責任                      *
*               人生的目的 : 受報  還願  行善                *
*               人生的價值 : 奉獻  付出                        *
================================================== 聖嚴法師  語 ===

--
發信站 [中央數學  織夢天堂 bbs.math.ncu.edu.tw]
  •FROM [weihan 從 ziyou4.math.ncu.edu.tw 發表]
→ weihan :中文字編號從一萬一千多到六萬五千多,中間還有其他文字    13/03/13
→ weihan :中文字介於 [19968,40869] 六萬多的是標點符號             13/04/05

上一篇 下一篇 同標題 發表文章 文章列表