我敢肯定這個問題被問了很多,但我只是想確保沒有更好的方法來做到這一點。C字符串到寬C字符串
基本上,我有一個const char *指向以空字符結尾的C字符串。我有另一個函數,它期望const wchar_t *指向具有相同字符的字符串。
暫時,我一直在試圖做這樣的:
size_t newsize = strlen(myCString) + 1;
wchar_t * wcstring = new wchar_t[newsize];
size_t convertedChars = 0;
mbstowcs_s(&convertedChars, wcstring, newsize, myCString, _TRUNCATE);
delete[] wcstring;
我需要在很多地方進行這些轉換,因爲我處理與期待第三方庫的一個或另一個。這是推薦的方式嗎?
它強烈地依賴於'爲const char *'字符串(這可能是UTF-8,ISO-Latin-1的,KOI的假定編碼-8,...)。你必須知道那個編碼。您可能會對http://www.gnu.org/software/libiconv/ library感興趣。 –
你基本上是在正確的軌道上。您可以通過首先運行帶有空指針的'mbstowcs'來獲得正確的目標大小。不要忘記在程序開始時運行'std :: setlocale(「」);''。 –