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

std::string と LPCSTR/LPWSTR の間で変換するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-04 01:27:03917ブラウズ

How to Convert Between std::string and LPCSTR/LPWSTR?

std::string と LPCSTR/LPWSTR 間の変換

std::string から LPCSTR への変換

std::string を LPCSTR に変換するには(定数文字列への長いポインタ)、std::string オブジェクトの c_str() メソッドを呼び出すだけです。これにより、内部の null で終了する文字列バッファへのポインタが返されます。

<code class="cpp">std::string myString = "Hello World!";
const char* lpcstr = myString.c_str();</code>

std::string を LPWSTR に変換

std::string を LPWSTR に変換 (定数ワイドへのロング ポインタ) string) を使用するには、さらにいくつかの手順が必要です:

  1. マルチバイトからワイド文字への変換関数 MultiByteTowideChar():
<code class="cpp">int len = MultiByteToWideChar(CP_UTF8, 0, myString.c_str(), myString.size(), NULL, 0);
wstring myWstring(len, '<pre class="brush:php;toolbar:false"><code class="cpp">const wchar_t* lpwstr = myWstring.c_str();</code>
'); MultiByteToWideChar(CP_UTF8, 0, myString.c_str(), myString.size(), &myWstring[0], len);
    内部の null で終了する wstring バッファへのポインタを取得します:
LPCSTR、LPSTR、LPWSTR、および LPCWSTR について

さまざまな用語異なるコンテキストの文字列へのポインタを参照します:

  • LPSTR: シングルバイト文字列へのポインタ
  • LPCSTR: へのポインタ半角定数文字列
  • LPWSTR: ワイド文字列(Unicode)へのポインタ
  • LPCWSTR: 定数ワイド文字へのポインタ文字列 (Unicode)
「LP」プレフィックスはポインターが長いことを示しますが、これは最新の Windows 開発では関係ありません。

LPWSTR と LPCWSTR は、同じ。 LPCWSTR は定数文字列へのポインタであり、LPWSTR は変更可能な文字列へのポインタです。

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

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