• 締切済み

std::stringからLPCWSTR型への変換

C++でファイルから読み込んだ文字列をLPCWSTR型に変換して用いたいのですが どうやって変換すればよいのでしょうか もしくは、最初からLPCWSTR型でファイルから読み込める方法などがあれば教えてください

みんなの回答

回答No.3

要はcharからwchar_tへの変換ですよね。 (LPCWSTR==wchar_t*ですからね) string a = "example"; TCHAR b[32]; CString c = a.c_str(); lstrcpy(b,c); おそらくこれで大丈夫だと思います。 おそらくというのは、TCHARとCStringという型はプロジェクトの文字セットに依存する型だからです。 つまり文字セットがマルチバイトにもかかわらず、LPCWSTRが必要な場合には、このコードは使えません。 その場合、強制的にchar→wchar_tに変換する手段として MultiByteToWideChar(); という関数があります。 >もしくは、最初からLPCWSTR型でファイルから読み込める方法などがあれば教えてください ファイルの形式がワイド文字列(unicode)なら、wifstreamとwstringで読み込めるのではないでしょうか。 試してないのですけど、これなら最初からwchar_tですよね。

回答No.2

http://okwave.jp/qa4071860.html 辺りが参考になりませんか? 上記の質問に付いた回答によると std::string ShiftJIS LPCWSTR Unicode だそうですから、どれかの文字列クラスの、コード変換関数を呼び出す必要がありそうです。

  • Yanch
  • ベストアンサー率50% (114/225)
回答No.1

kaz_5121 さんの環境において、std::stringに何の文字コードを使っているか わかりませんが、 LPCWSTR型は、wchar_t型への const ポインタですから、 wchar_t 型に、データを変換してあげるとよいと思います。 ファイルから直接読み込む場合は、ファイルの文字コードをwchar_tと同じに してあげるとよいと思います。 wchar_tは、環境にもよりますが、(UTF-16LE、UTF-16BE、UTF-32LE、UTF-32BE、20ビットUnicode、他) 等の文字コードになっているかもしれません。