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);