- ベストアンサー
Cstring(日本語含む)をcharに変換したいのですが
日本語を含む文字列が格納されたCstringをcharに変換したく 以下のプログラムを作成しましたがwcstombs_s() でエラーに なってしまいます。(戻り値が EILSEQ) どうしたらいいか、アドバイスをいただけないでしょうか? CString csPass("Testテスト"); char cName[512]; size_t sz = 0; errno_t err; err= wcstombs_s(&sz, cName, sizeof(cName), csPass.GetString(), _TRUNCATE); if(0 != err){ return; } 【環境】 WindowsXP VC++2008
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
CStringクラスが使えるならCStringAクラスを介してchar型配列に入れてみては。 CString csPass(_T("Testテスト")); char cName[512]; strcpy_s(cName, CStringA(csPass)); UnicodeにあってCP932(Shift_JIS)にない文字はおかしくなりますけど。 (wchar_t→char変換ということである以上回避しようがない。)
その他の回答 (1)
- Lchan0211
- ベストアンサー率64% (239/371)
MicrosoftのATLやMFCで提供されているCStringクラスには GetString()というメソッドはなかったと思いますが、 独自作成のCStringクラスですか? csPass.GetString()の結果をデバッガ等で 確認してみる必要があるように思います。 Microsoft標準のCStringクラスであれば、 wcstombs_s(&sz, cName, sizeof(cName), (LPCTSTR)csPass, _TRUNCATE); でよさそうに思います。 (参考) http://msdn.microsoft.com/ja-jp/library/awkwbzyc.aspx
お礼
回答ありがとうございます。 CStringクラスは独自作成のものではありませんが、私自身CStringクラスについてまだまた勉強不足のようです。 教えていただいた参考ページもとても勉強になりました。 今回は回答いただき本当にありがとうございました。
お礼
回答ありがとうございました。 確認したところ上手くいきました。頂いた注意点に気を付けながら使用したいと思います。 今回は本当にありがとうございました。