ホームページ >バックエンド開発 >C++ >std::string を LPCSTR および LPWSTR に変換するにはどうすればよいですか?

std::string を LPCSTR および LPWSTR に変換するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-04 07:32:02530ブラウズ

How to convert a std::string to LPCSTR and LPWSTR?

std::string を LPCSTR および LPWSTR に変換する

std::string を LPCSTR (定数文字列への長いポインタ) に変換する比較的簡単なプロセスです。これを行うには、std::string オブジェクトの c_str() メソッドを呼び出します。このメソッドは const char * 値を返し、それを LPCSTR に割り当てることができます。

ただし、次の場合、状況は少し複雑になります。 std::string を Unicode (ワイド) 文字列への長いポインタである LPWSTR に変換します。これを行うには、_bstr_t クラスを使用する必要があります。これは、さまざまな種類の文字列間の変換に使用できるテンプレート クラスです。

これは、std::string を変換する方法の例です。 _bstr_t クラスを使用して LPWSTR に変換します:

#include <string>
#include <comdef.h>

int main() {
  std::string str = "Hello world";
  _bstr_t bstr(str.c_str());

  // Now you have an LPWSTR that you can use.
  LPWSTR wide_str = bstr.GetBSTR();

  return 0;
}

LPSTR、LPCSTR、LPWSTR、および LPCWSTR について

これらの異なる文字列型の名前は混乱を招く可能性がありますが、これらを分解すると、非常に理解しやすくなります。

  • LPSTR - 文字列への (長い) ポインタ - char *
  • LPCSTR - 定数文字列への (長い) ポインタ - const char *
  • LPWSTR - Unicode (ワイド) 文字列への (長い) ポインタ - wchar_t *
  • LPCWSTR - 定数 Unicode (ワイド) 文字列への (長い) ポインタ - const wchar_t *

ご覧のとおり、これらの型の唯一の違いは、定数文字列へのポインターであるかどうかです。名前の L (長い) 部分は無視できます。これは 16 ビット Windows からの名残です。

以上がstd::string を LPCSTR および LPWSTR に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。