• ベストアンサー

CStringをwchar_tに変換したい

CStringをwchar_tに変換したく思い、ネットで探したところ、 http://msdn2.microsoft.com/ja-jp/library/ms235631(VS.80).aspx のページを見つけたので、下記のプログラムを組んで実行してみましたがエラーになって しまいます。 【プログラム】 CString orig("Hello, World!"); // Convert to a char* const size_t newsize = 100; // Convert to a wchar_t* // You must first convert to a char * for this to work. size_t origsize = strlen(orig) + 1; size_t convertedChars = 0; wchar_t wcstring[newsize]; mbstowcs_s(&convertedChars, wcstring, origsize, orig, _TRUNCATE); 【エラー】 error C2664: 'strlen' : 1 番目の引数を 'CString' から 'const char *' に変換できません。 error C2664: 'mbstowcs_s' : 4 番目の引数を 'CString' から 'const char *' に変換できません。 &CStrinをconst char *でキャストしてもうまくいきません。 どこがおかしいのでしょうか? 【環境】 WindowsXP+VC++2005

質問者が選んだベストアンサー

  • ベストアンサー
noname#88356
noname#88356
回答No.2

CStringはTCHAR *です。つまりVSがマルチバイト設定ならchar *ですし、 ユニコード設定ならWCHAR *(wchar_t *と同じです)になります。 仮にWCHAR *型に変換したいのなら CString cStr = "元の文字列"; //cStr.GetString()はTCHAR *型 CStringW wideStr = cStr; //wideStr.GetString()はWCHAR *型 の様に一度CStringWを介した方が楽だと思います。 参考までに CString ・・・GetString()で得られる型はTCHAR * CStringA ・・・GetString()で得られる型はchar * CStringW ・・・GetString()で得られる型はWCHAR *

その他の回答 (1)

回答No.1

size_t origsize = strlen(static_cast<const char*>(orig))+1; ※ ただしUNICODEモードでコンパイル"しないこと"

関連するQ&A