0
wchar_t *をchar *に変換しようとしています。ここに私のコードは次のとおりです。iOS上でwchar_t *をchar *に変換する
size_t result = wcstombs(returned, str, length + 1);
if (result == (size_t)-1) {
int error = errno;
}
それは確かに失敗し、エラーが92(ENOPROTOOPT)で満たされている - プロトコルは利用できません。
私もロケールを設定しようとしました:
setlocale(LC_ALL, "C");
、あまりにもこの1:
setlocale(LC_ALL, "");
私はちょうど静的キャストで文字をスローするように誘惑しています!
ロケールは、変換の*結果*にのみ影響します。いずれにしても、ソースワイド文字列が "システムのワイドエンコーディング"でエンコードされていることを確認する必要があります。基本的には、ワイド文字列は 'mbstowcs()'コール、またはWCHAR_Tへの 'iconv()'変換の結果でなければなりません。 [これは私の質問です](http://stackoverflow.com/questions/6300804/wchars-encodings-standards-and-portability)この件に関する。 –