VC++で手軽にstd::string↔std::wstring変換を行う方法

この記事は公開から3年以上経過しています。

Microsoft Visual C++開発でATL/MFCプロジェクト以外のコンソールアプリプロジェクトなどから、手軽にstd::string(CHAR)↔std::wstring(WCHAR)の変換を行う方法。

対応

ATLスタティックライブラリをリンクしてA2W_EXW2A_EX汎用変換マクロを使用する。

※ 予めVisual Studio InstallerからC++ ATLコンポーネントをインストールしておく必要があります。
file

サンプルソースコード(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に変換されていることが確認できます。

file
file

W2A_EXマクロを使用することで、これとは逆のstd::wstring→std::stringも変換可能です。

以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする