我想獲取文件中的字符數.字符我的意思是“真正的”字符,而不是字節.假設我知道文件編碼.
我嘗試使用mbstowcs()但它不起作用,因為它使用系統區域設置(或使用setlocale定義的系統區域設置).因為setlocale不是線程安全的,所以在調用mbstowcs()之前我不認為使用它是個好主意.即使它是安全的,我也必須確定
我的程序不會在setlocale()的調用之間“跳轉”(信號等)(一次調用將其設置為文件的編碼,然后調用以恢復到前一次).
因此,舉一個例子,假設我們有一個使用俄語編碼(例如KOI8)編碼的文件ru.txt.所以,我想打開文件并獲取字符數,假設文件的編碼是KOI8.
如果mbstowcs()可以采用source_encoding參數,那可能很容易……
字符串的字節數怎么算、編輯:使用mbstowcs()的另一個問題是必須在系統上安裝與文件編碼對應的語言環境…
我建議使用iconv(3):
NAME
iconv - perform character set conversion
SYNOPSIS
#include
linux c編程,size_t iconv(iconv_t cd,
char **inbuf, size_t *inbytesleft,
char **outbuf, size_t *outbytesleft);
并轉換為utf32.對于每個轉換的字符,您將得到4字節輸出(對于BOM,加2).應該可以使用固定大小outbuf逐個轉換輸入,如果一個人仔細選擇outbytesleft(即4 * inbytesleft 2 :-).
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态