0

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");

そしてこれも:

setlocale(LC_ALL, "");

静的なキャストでキャラクターを投げたくなります!

4

1 に答える 1

0

問題は、ソース文字列が非標準のエンコーディング(ワイド文字ごとに2つのASCII文字)でエンコードされていたことでした。これはデバッガーでは問題なく見えましたが、明らかに内部的には酸っぱいものでした。生成されたエラーコードは明らかに文書化されていませんが、それは単にそのテキストをデコードできないことと同じです。

于 2011-12-06T07:02:09.847 に答える