亚洲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