std::string を LPCWSTR に変換する方法またはコード スニペットを探しています。
205239 次
6 に答える
142
解決策は、実際には他の提案よりもはるかに簡単です。
std::wstring stemp = std::wstring(s.begin(), s.end());
LPCWSTR sw = stemp.c_str();
何よりも、プラットフォームに依存しません。
于 2010-11-09T23:12:21.993 に答える
13
ATL/MFC 環境の場合は、ATL 変換マクロを使用できます。
#include <atlbase.h>
#include <atlconv.h>
. . .
string myStr("My string");
CA2W unicodeStr(myStr);
その後、unicodeStr を LPCWSTR として使用できます。Unicode 文字列のメモリがスタック上に作成されて解放された後、unicodeStr のデストラクタが実行されます。
于 2008-08-26T02:30:25.013 に答える
2
標準のコンバーターを使用することを好みます。
#include <codecvt>
std::string s = "Hi";
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
std::wstring wide = converter.from_bytes(s);
LPCWSTR result = wide.c_str();
この回答で詳細を確認してください: https://stackoverflow.com/a/18597384/592651
2020 年 12 月 21 日更新: 私の回答は @Andreas H によってコメントされました。彼のコメントは価値があると思ったので、それに応じて回答を更新しました。
codecvt_utf8_utf16
C++17 では非推奨です。- また、このコードは、ソース エンコーディングが UTF-8 であることを暗示していますが、通常はそうではありません。
- C++20 では、そのため、UTF-8 用に別の型 std::u8string があります。
しかし、私はまだ古いバージョンの C++ を使用しており、たまたまソース エンコーディングが UTF-8 だったので、うまくいきました。
于 2020-10-26T06:39:47.710 に答える
1
QT を使用している場合は、QString に変換すると、myqstring.toStdWString() でうまくいきます。
于 2021-07-21T07:58:05.640 に答える