プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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ですよね。
    • good
    • 0

http://okwave.jp/qa4071860.html
辺りが参考になりませんか?

上記の質問に付いた回答によると
std::string ShiftJIS
LPCWSTR Unicode
だそうですから、どれかの文字列クラスの、コード変換関数を呼び出す必要がありそうです。
    • good
    • 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、他)
等の文字コードになっているかもしれません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A