をiconvを使用してwstringのをUTF-8から変換する:この私がwstringのにUTF-8文字のベクトルを変換したいC++、私は次のことを実行し、C++ Linuxアプリケーションを持っている
int main()
{
using namespace std;
char str[] = "¡Hola!";
wchar_t wstr[50];
size_t rc;
memset(wstr, 0, sizeof(wstr));
rc = mbstowcs(wstr, str, 50);
cout << "mbstowcs results: ";
cout << "rc = " << rc << endl;
cout << "str:" << str << endl;
wcout << L"wstr:" << wstr << endl;
setlocale(LC_CTYPE,"");
iconv_t cd = iconv_open("WCHAR_T", "UTF-8");
cout << "iconv_open errno = "<< errno << endl;
char *s = str;
char *t = (char *)wstr;
size_t s1 = strlen(str);
size_t s2 = 50;
rc = iconv(cd, &s, &s1, &t, &s2);
cout << "iconv results: ";
cout << "rc = " << rc << endl;
cout << "str:" << str << endl;
wcout << L"wstr:" << wstr << endl;
}
が、上記のコードリターン結果:
mbstowcs results: rc = 18446744073709551615
str:¡Hola!
wstr:
iconv_open errno = 2
iconv results: rc = 0
str:¡Hola!
wstr:�Hola!
iconv result最初のcharを別のcharに変換します。
注:私はUCS-4 -internalでWCHAR_Tを交換する場合WSTRは何も含まれていません。
助けてくださいか?
ありがとうございました!
wchar_tが32ビット(UCS-4を保持するには十分)であるとは思わないようにしてください。 – ognian
追加の注記として:文字列定数(つまり 'str')を参照するときは、後で偶然にそれを変更しようとしないために 'const'を使います。 – Mario