亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 請(qǐng)教中文斷字問題 [打印本頁]

作者: s5unty    時(shí)間: 2008-08-23 11:03
標(biāo)題: 請(qǐng)教中文斷字問題
要求在一個(gè)包含漢字的文本文件中搜索一串字符,如果搜索成功,返回該字符串前后一定區(qū)域內(nèi)的文本內(nèi)容。

假設(shè)有文件 foo.utf8
內(nèi)容為: 中華人民abc共和國
搜索關(guān)鍵字為: abc
返回區(qū)域的最大長度為: 11,(即10個(gè)英文字符或5個(gè)漢字)

            p
              |
內(nèi)容 - 中  華  人  民 a b c  共 和 國
位置 - 12 34 56 78 9 a b cd ef gh

當(dāng)我加載了 foo.utf8 后,用 strstr 定位到 p 處,然后準(zhǔn)備返回搜索結(jié)果(應(yīng)該是"人民abc共",長度9),

問題是當(dāng)我移動(dòng) p 指針時(shí),有可能會(huì)移動(dòng)到位置6處,這樣一來返回結(jié)果就是亂碼;

而且即使我再往前移動(dòng)到5處,偶爾還是會(huì)有問題(因?yàn)槲疫要把 utf8 的搜索結(jié)果,再轉(zhuǎn)到 GB2312)

請(qǐng)問 C++ 中有沒有像 PHP 語言中 mb_* 開頭的函數(shù),可以自動(dòng)判斷漢字并準(zhǔn)確定位到起始位置?

歡迎任何意見,謝謝

[ 本帖最后由 s5unty 于 2008-8-23 11:05 編輯 ]
作者: happy_fish100    時(shí)間: 2008-08-23 11:30
標(biāo)題: 回復(fù) #1 s5unty 的帖子
一個(gè)漢字如此采用UTF-8編碼為3字節(jié),GB編碼為2字節(jié)
如果采用GB編碼,搜索時(shí)可能會(huì)出現(xiàn)錯(cuò)位的情況,即從漢字的低字節(jié)開始匹配成功。
建議采用UTF-8字符集,這樣不會(huì)出現(xiàn)錯(cuò)位現(xiàn)象。
C/C++中字符集轉(zhuǎn)換可以使用iconv。
作者: s5unty    時(shí)間: 2008-08-23 12:17
wchar_t out[4] = L"ab";
printf("%ls\n", out);




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2