Unicode アプリケーションで標準の char 文字列を統合するには、char を wchar_t。ただし、この変換を実装しようとすると、多くの場合、未定義の動作が発生します。
次の関数を考えてみましょう:const wchar_t *GetWC(const char *c) { const size_t cSize = strlen(c)+1; wchar_t wc[cSize]; mbstowcs (wc, c, cSize); return wc; }この関数は、wchar_t の配列を割り当て、char
を wchar_t そしてポインタを wc に返します。ただし、wc は関数の最後で割り当てが解除されるローカル変数であるため、返されたポインタが逆参照されると未定義の動作が発生します。問題の修正
const wchar_t *GetWC(const char *c) { const size_t cSize = strlen(c)+1; wchar_t* wc = new wchar_t[cSize]; mbstowcs (wc, c, cSize); return wc; }
呼び出し側の責任
以上がUnicode アプリケーションで char を wchar_t に安全に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。