我需要一個文件io庫,它可以爲我的程序提供一個utf-16(小端)接口,但可以處理其他編碼中的文件,主要是ascii(僅用於輸入),utf-8,utf-16 ,utf-32/ucs4包括小端和大端字節順序。C++ unicode文件io
查看了我發現的唯一一個庫是ICU ustdio.h庫。
我確實嘗試過,但是我甚至可以用一個非常簡單的文本工作,並且它的用法上幾乎沒有任何文檔,只有ICU文件參考頁面沒有提供任何示例和很少的細節例如,從現有的FILE中創建一個UFILE,使用FILE *和其他幾個函數以及其他幾個函數是安全的)。
而且ID遠,而一個C++庫,可以給我在一個C風格的界面寬流接口...
std::wstring str = L"Hello World in UTF-16!\nAnother line.\n";
UFILE *ufile = u_fopen("out2.txt", "w", 0, "utf-16");
u_file_write(str.c_str(), str.size(), ufile);
u_fclose(ufile);
輸出
Hello World in UTF-16!䄀渀漀琀梔攀爀 氀椀渀攀⸀ഀ
六角
FF FE 48 00 65 00 6C 00 6C 00 6F 00 20 00 57 00
6F 00 72 00 6C 00 64 00 20 00 69 00 6E 00 20 00
55 00 54 00 46 00 2D 00 31 00 36 00 21 00 0D 0A
00 41 00 6E 00 6F 00 74 00 68 00 65 00 72 00 20
00 6C 00 69 00 6E 00 65 00 2E 00 0D 0A 00
編輯:窗口上的正確輸出將是:
FF FE 48 00 65 00 6C 00 6C 00 6F 00 20 00 57 00
6F 00 72 00 6C 00 64 00 20 00 69 00 6E 00 20 00
55 00 54 00 46 00 2D 00 31 00 36 00 21 00 0D 00
0A 00 41 00 6E 00 6F 00 74 00 68 00 65 00 72 00
20 00 6C 00 69 00 6E 00 65 00 2E 00 0D 00 0A 00
嘗試之類的東西,\ r作品,\ n由一個破碎的\ r \ n,即\ r \更換在我的字符串n變成0D 00 0D 0A 00 – 2009-07-19 11:22:24