この記事は公開から3年以上経過しています。
Microsoft Visual C++開発でATL/MFCプロジェクト以外のコンソールアプリプロジェクトなどから、手軽にstd::string(CHAR)↔std::wstring(WCHAR)の変換を行う方法。
対応
ATLスタティックライブラリをリンクしてA2W_EX
、W2A_EX
汎用変換マクロを使用する。
※ 予めVisual Studio InstallerからC++ ATL
コンポーネントをインストールしておく必要があります。
サンプルソースコード(std::string→std::wstring)
// ATLヘッダをインクルード
#include <atlconv.h>
#include <string>
// ATLスタティックリンクライブラリをリンク
#pragma comment(lib, "atls.lib")
#pragma comment(lib, "afxnmcd.lib")
int main() {
// ATLの変換マクロを展開
USES_CONVERSION_EX;
// A2W_EX汎用変換マクロを使いstd::string(CHAR)->std::wstring(WCHAR)変換
std::string src = "TEST";
const auto pwstr = A2W_EX(src.c_str(), src.length());
if (pwstr != NULL) {
std::wstring dst(pwstr);
}
}
実行結果
以下のとおり、std::stringがstd::wstringに変換されていることが確認できます。
W2A_EX
マクロを使用することで、これとは逆のstd::wstring→std::stringも変換可能です。
以上です。