>  기사  >  백엔드 개발  >  std::string을 LPCSTR 및 LPWSTR로 변환하는 방법은 무엇입니까?

std::string을 LPCSTR 및 LPWSTR로 변환하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-04 07:32:02455검색

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

std::string을 LPCSTR 및 LPWSTR로 변환

std::string을 LPCSTR(상수 문자열에 대한 긴 포인터)로 변환 비교적 간단한 과정입니다. std::string 객체에서 c_str() 메서드를 호출하여 이를 수행할 수 있습니다. 이 메서드는 LPCSTR에 할당할 수 있는 const char * 값을 반환합니다.

그러나 다음과 같은 경우 상황이 좀 더 복잡해집니다. std::string을 유니코드(와이드) 문자열에 대한 긴 포인터인 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 - 유니코드(와이드) 문자열에 대한 (긴) 포인터 - wchar_t *
  • LPCWSTR - 상수 유니코드(와이드) 문자열에 대한 (긴) 포인터 - const wchar_t *

보시다시피 이러한 유형 간의 유일한 차이점은 상수 문자열에 대한 포인터인지 여부입니다. 이름의 L(긴) 부분은 무시해도 됩니다. 이는 16비트 Windows에서 그대로 사용된 것입니다.

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

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