Home >Backend Development >C++ >How to Convert Between std::string and LPCSTR/LPWSTR?

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

Linda Hamilton
Linda HamiltonOriginal
2024-11-04 01:27:03917browse

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

Converting Between std::string and LPCSTR/LPWSTR

Converting std::string to LPCSTR

To convert a std::string to LPCSTR (long pointer to constant string), simply call the c_str() method on the std::string object. This will return a pointer to the internal null-terminated string buffer.

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

Converting std::string to LPWSTR

Converting a std::string to LPWSTR (long pointer to constant wide string) requires a few more steps:

  1. Convert the std::string to a wstring (wide string) using the multibyte-to-wide character function 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);
  1. Get a pointer to the internal null-terminated wstring buffer:

Understanding LPCSTR, LPSTR, LPWSTR, and LPCWSTR

The different terms refer to pointers to strings in different contexts:

  • LPSTR: Pointer to a single-byte character string
  • LPCSTR: Pointer to a constant single-byte character string
  • LPWSTR: Pointer to a wide character string (Unicode)
  • LPCWSTR: Pointer to a constant wide character string (Unicode)

The "LP" prefix indicates that the pointer is long, but this is no longer relevant in modern Windows development.

Remember, LPWSTR and LPCWSTR are not the same. LPCWSTR is a pointer to a constant string, while LPWSTR is a pointer to a modifiable string.

The above is the detailed content of How to Convert Between std::string and LPCSTR/LPWSTR?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn