>백엔드 개발 >C++ >std::string과 LPCSTR/LPWSTR 사이를 변환하는 방법은 무엇입니까?

std::string과 LPCSTR/LPWSTR 사이를 변환하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-04 01:27:03916검색

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()를 사용하여 std::string을 wstring(와이드 문자열)으로 변환합니다.
<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. 내부 null로 끝나는 wstring 버퍼에 대한 포인터 가져오기:

LPCSTR, LPSTR, LPWSTR 및 LPCWSTR 이해

다양한 용어 다양한 컨텍스트의 문자열에 대한 포인터 참조:

  • LPSTR: 단일 바이트 문자열에 대한 포인터
  • LPCSTR:에 대한 포인터 상수 단일 바이트 문자열
  • LPWSTR: 와이드 문자 문자열에 대한 포인터(유니코드)
  • LPCWSTR: 상수 와이드 문자에 대한 포인터 문자열(유니코드)

"LP" 접두사는 포인터가 길다는 것을 나타내지만 현대 Windows 개발에서는 더 이상 관련이 없습니다.

LPWSTR 및 LPCWSTR은 포인터가 아님을 기억하세요. 같은. LPCWSTR은 상수 문자열에 대한 포인터이고, LPWSTR은 수정 가능한 문자열에 대한 포인터입니다.

위 내용은 std::string과 LPCSTR/LPWSTR 사이를 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.