1
BSTR
(래퍼 클래스로 _bstr_t
사용)을 만들 때 constructors of _bstr_t
중 일부를 사용해야합니다. BSTR
은 널 문자를 포함 할 수있는 길이가 접두사가 붙은 문자열이기 때문에 주어진 네이티브 문자열의 null 종결에 의존하지 않고 원래 문자열을 사용하여 그러한 문자열을 만들 수 있어야합니다.네이티브 문자열로 BSTR (_bstr_t 래퍼 사용)을 만들 때 길이를 어떻게 설정할 수 있습니까?
wchar_t* pwNativeString = L"abc\0def\0\0ghi\0\0\0"; // + automatic "\0"
// Now I want to create a BSTR using _bstr_t by this string.
_bstr_t spBSTR = _bstr_t(pwNativeString);
문제는 생성자가 pwNativeString
의 널 종료에 의존한다는 것입니다 :
BSTR
은 단지
"abc"
이고 그 이상은 아닙니다. 그래서 내 질문은 :
BSTR
또는 _bstr_t
을 만들고 특정 길이의 배열에 대한 포인터를 전달하는 방법은 무엇입니까? 다음 의사 코드 예제에서 :
_bstr_t spBSTR = _bstr_t(pwNativeString, 15);
그런데 길이가 저장된 위치를 알고 계셨습니까? 문자 배열의 일부입니까? 그것은 구조입니까 아니면 그것입니까? –
그런데 이것을 쉽게 사용하기 위해서 - 나는 누군가를 돕는다면이 매크로를 사용할 것이다 :'#define _bstr_t_create (str, len) _bstr_t (SysAllocStringLen (str, len), false)' –
길이는 구현 - OS에 의해 결정된 정의 된 위치. 이것은 일반적으로 문자열의 첫 번째 문자 바로 앞의 네 바이트에 있지만,'SysStringLen'을 호출 할 수 있다고 가정하는 것이 아닙니다. –