我目前使用iconv
來轉換具有不同編碼的文檔。在保持代碼正確性的同時使用iconv
的iconv()
函數的原型如下:
size_t iconv (
iconv_t cd,
const char* * inbuf,
size_t * inbytesleft,
char* * outbuf,
size_t * outbytesleft
);
到目前爲止,我只需要轉換char*
類型的緩衝器,但我也意識到我必須轉換wchar_t*
類型的緩衝區。實際上,iconv
甚至有一個專用編碼名稱"wchar_t"
用於這樣的緩衝區:此編碼適合操作系統設置:即,在我的計算機上,它指的是Windows上的UCS-2和Linux上的UTF-32。
但是,這裏存在的問題:如果我有wchar_t*
緩衝區我可以reinterpret_cast
到char*
一個緩衝區iconv
使用它,但我面對的實現定義的行爲:我不能肯定的是,所有的編譯器的行爲關於演員也是如此。
我應該在這裏做什麼?
事實上,如果你想在mbstowcs()之後得到的未指定的「系統編碼」和一個確定的編碼之間進行轉換,WCHAR編碼是至關重要的...... –