请教:
1.他们的结构是什么样的?是怎么存储的?
2.BSTR,TCHAR,WCHAR,CHAR他们之间能否进行强制转换?
例如:
char *p="abc";则用BSTR,WCHAR,TCHAR如何来表示呢?内部结构是什么样的?
请举例说明。
由BSTR可以转换成CHAR,WCHAR,CHAR吗?由 CHAR,WCHAR,CHAR可以转换成BSTR吗?如何转换,请举例说明。
1.他们的结构是什么样的?是怎么存储的?
2.BSTR,TCHAR,WCHAR,CHAR他们之间能否进行强制转换?
例如:
char *p="abc";则用BSTR,WCHAR,TCHAR如何来表示呢?内部结构是什么样的?
请举例说明。
由BSTR可以转换成CHAR,WCHAR,CHAR吗?由 CHAR,WCHAR,CHAR可以转换成BSTR吗?如何转换,请举例说明。
1.这些类型的具体结构是怎样的?能否举例说明
2。能否实现类型间的强制转换?若能,请举例说明。
3。如分别实现BSTR,WCHAR,TCHAR得串拷贝,应怎样实现?请举例说明。
例如:
char *p="abc";则用BSTR,WCHAR,TCHAR如何来表示呢?内部结构是什么样的?
请举例说明。
由BSTR可以转换成CHAR,WCHAR,CHAR吗?由 CHAR,WCHAR,CHAR可以转换成BSTR吗?如何转换,请举例说明。
其中 WCHAR==wchar_t,CHAR==char。
TCHAR是一种条件编译的类型,根据条件可以代表wchar_t或char。BSTR是BASICA中的字符串在C++中的表示方法,它是一种带有字符计数的wchar_t类型的字符串,SysAllocString, SysFreeString这两个函数是Windows中专门处理BSTR的函数(属于COM函数)。各种类型之间是可以进行强制转换的(有些有专有的函数比如wchar_t和char的相互转换)
是一个指针,指向宽字符字符串,typedef OLECHAR *BSTR;
//TCHAR
The TCHAR data type is a Win32 character string that can be used to describe ANSI, DBCS, or Unicode strings. For ANSI and DBCS platforms, TCHAR is defined as follows:
typedef char TCHAR;
For Unicode platforms, TCHAR is defined as synonymous with the WCHAR type.
// WCHAR
16-bit Unicode character.
// CHAR
8-bit Windows (ANSI) character.
// CComVariant
对VARIANT进行了封装
// CComBSTR
对BSTR进行了封装
// SysAllocString和SysFreeString
Win32 api function,
SysAllocString是分配一个字符串,并copy the passed string into it.
SysFreeString是释放由SysAllocString分配的内存空间
WCHAR,CHAR,TCHAR的关系实际上是这样的#ifdef UNICODE
typedef wchar_t TCHAR;
#else
typedef unsigned char TCHAR;
#endif
typedef unsigned char CHAR;
typedef unsigned wchar_t WCHAR; //wchar_t 16-bit predefined type for wide characters. Unsigned A BSTR, known as basic string or binary string, is a pointer to a wide character string used by Automation data manipulation functions.typedef OLECHAR FAR* BSTR;
BSTRs are wide, double-byte (Unicode) strings on 32-bit Windows platforms and narrow, single-byte strings on the Apple® PowerMac™.因而不能直接进行强制转换,系统提供了一些宏进行转换如OLE2T,T2OLE。
另外 BSTR 并在 COM 对象之间传递它们时,必须小心地处理它们所使用的内存以避免内存泄漏。当 BSTR 停留在接口中时,在完成其使用后必须释放出它的内存。但是,如果 BSTR 传递出了接口,那么接收对象将负责它的内存管理。管理的函数就诸如SysAllocString, SysFreeString。BSTR是一个比较复杂的数据类型,系统有许多关于他的操作和封装对象,应该看一些有关方面的书。其他的问题请提的具体些,并且多给一点分。
你的答案在这里,本来想给你贴出来的,太大了,你自己去看吧
我也不太明白,写com时,搞得头昏脑胀的