본문 바로가기

Projects/CoVNC

BSTR

COM 은 무조건 2바이트를 기본으로 하는 유니코드형 문자만을 사용합니다.
이를 엑세스하기 위한 기본 자료형은 wchat_t 형입니다.
이는 1바이트 문자형인 char 에 대응하는 것입니다.

보통은 wchar_t *을 BSTR 로 형정의(typedef)해서 사용하는데,
아무래도 원시적인 문자열에 대한 포인트에 불과하므로, AnsiString 같은 편리성이 없습니다.
그래서 빌더는 WideString형을 제공하지만,
경우에 따라서 BSTR 문자열을 쉽게 제어할 수 있는 클래스가 필요하기도 합니다.
(COM이나 COM이 아니거나 간에 또는 VC++과 호환을 맞추기 위해)
이 경우 comutil.h 에 정의되어 있는 COM 제어 지원용 _bstr_t 형 클래스를  사용하는 경우가 있습니다.
_bstr_t 는 AnsiString 과 유사하게 2바이트 유니코드 문자열을 다룰 수 있도록 해주는
C++에서만 제공되는 클래스입니다.


COM 은 무조건 2바이트를 기본으로 하는 유니코드형 문자만을 사용합니다.
이를 엑세스하기 위한 기본 자료형은 wchat_t 형입니다.
이는 1바이트 문자형인 char 에 대응하는 것입니다.

보통은 wchar_t *을 BSTR 로 형정의(typedef)해서 사용하는데,
아무래도 원시적인 문자열에 대한 포인트에 불과하므로, AnsiString 같은 편리성이 없습니다.
그래서 빌더는 WideString형을 제공하지만,
경우에 따라서 BSTR 문자열을 쉽게 제어할 수 있는 클래스가 필요하기도 합니다.
(COM이나 COM이 아니거나 간에 또는 VC++과 호환을 맞추기 위해)
이 경우 comutil.h 에 정의되어 있는 COM 제어 지원용 _bstr_t 형 클래스를  사용하는 경우가 있습니다.
_bstr_t 는 AnsiString 과 유사하게 2바이트 유니코드 문자열을 다룰 수 있도록 해주는
C++에서만 제공되는 클래스입니다.


 bstr_t a(L"고구려");
 bstr_t b("goguryur");

 bstr_t c = a+b;

 wchar_t* p1 = (wchar_t*)c;//오퍼레이터
 char*    p2 = (char*)c;      //오퍼레이터

 int size1 = wcslen(p1);
 int size2 = strlen(p2);



출처: http://kylix.borlandforum.com/


 bstr_t a(L"고구려");
 bstr_t b("goguryur");

 bstr_t c = a+b;

 wchar_t* p1 = (wchar_t*)c;//오퍼레이터
 char*    p2 = (char*)c;      //오퍼레이터

 int size1 = wcslen(p1);
 int size2 = strlen(p2);


_bstr_t에서는 아래와 같은 형변환 오퍼레이터를 사용하실 수 있습니다.

operator const wchar_t*() const  throw(); operator wchar_t*() cosnt throw(); operator const char*()


CString에서는 문자열을 가저올때, (LPCTSTR)로 형변환을 하듯이, _bstr_t형 변수를 형변환해서 이용해 주시면 됩니다.

_bstr_t bs;

...

sprintf(ch, "%s", (const char*)bs);

strcpy(ch, (const char*)bs);

'Projects > CoVNC' 카테고리의 다른 글

소스코드 검색 사이트  (0) 2007.06.09
겨우 찾아낸 제대로 된 XML 파싱  (3) 2007.06.01
[Win32 API] DialogBoxParam  (0) 2007.05.20
MSXML 사용법 요약  (0) 2007.05.05
Microsoft XML Core Service(MSXML)  (0) 2007.05.05