可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。
可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。
这个编译器能通过吗?楼主是6.0的?能通过?我的是2005的,通不过,反正我从来没用过楼主这样的代码,不管能否通过,正规的代码都是这样的:
3)GetCollect可能会从数据库中取到NULL,如果数据库定义是NOT NULL,可以直接使用楼主说的第二种。否则,必须使用第一种,先判断var.vt是否为VT_NULL,如果是的话,就不能再使用第二种方法了,否则会报错。
贴的图不就说明了,如果是VT_NULL, BSTR是无效的,当然也就不能使用了。所以str应该等于EMPTY,并且不能使用第二种方法中的代码,否则会产生运行时错误。2种方法并不是没有区别的,而是区别很明显的!!!
对于取字符串来说,没有区别。
但是如果是别的类型的数据,应使用第一种,并使用对应的var.数据来实现。
第一种方法适用性比较广。
1是检查了一下是否得到返回值,如果没有返回值则置空。
2不做检查直接进行转换,如果没有返回值可能得到随机一个字符串甚至出错。。
其实是一样的,没区别,CString照样可以赋空值
为了方便你更好的学习和阅读,也更好的体现尊重原创作者的劳动成果,请您直接查看转载原本链接:
VC++常用数据类型及其操作详解
一.VC常用数据类型列表
的所有编程方式中,我们常常要用到这样的一些基本字符串类型,如BSTR、LPSTR和LPWSTR等。之所以出现类似上述的这些数据类型,是因为不同编程语言之间的数据交换以及对ANSI、Unicode和多字节字符集(MBCS)的支持。
BSTR(Basic STRing,Basic字符串)是一个OLECHAR*类型的Unicode字符串。它被描述成一个与自动化相兼容的类型。由于操作系统提供相应的 API函数(如SysAllocString)来管理它以及一些默认的调度代码,因此BSTR实际上就是一个COM字符串,但它却在自动化技术以外的多种场合下得到广泛使用。图1描述了BSTR的结构,其中DWORD值是字符串中实际所占用的字节数,且它的值是字符串中Unicode字符的两倍。
LPSTR和LPWSTR是Win32和VC++所使用的一种字符串数据类型。LPSTR被定义成是一个指向以NULL(‘/0’)结尾的8位ANSI 字符数组指针,而LPWSTR是一个指向以NULL结尾的16位双字节字符数组指针。在VC++中,还有类似的字符串类型,如LPTSTR、 LPCTSTR等,它们的含义如图2所示。
short。由于CString在MFC应用程序中经常用到,这里不再重复。
三、VARIANT、COleVariant 和_variant_t 在OLE、ActiveX和COM中,VARIANT数据类型提供了一种非常有效的机制,由于它既包含了数据本身,也包含了数据的类型,因而它可以实现各种不同的自动化数据的传输。下面让我们来看看的MFC应用程序中使用时需要在代码文件前面添加下列两句:
#include "由于功能强大、应用广泛,因而字符串之间的转换更为频繁。本文几乎涉及到目前的所有转换方法。当然对于.NET框架来说,还可使用Convert和Text类进行不同数据类型以及字符编码之间的相互转换。
要想使你的工程支持MFC,请按照以下步骤作:
OK,现在再编译你的工程即可。
因为(char *)转换需要一个const的字符串资源,才能强制转换。
它可以根据编译环境确定为DBMS,还是UNICODE字符集
先拷贝MSDN中的一小段话:
14。byte数据类型转换成int型??我用byte型读进一组数据想把他转成int型进行运算如何做呢?
在此谢谢大家,请帮忙看看
27。在一个COM的接口函数中有一个 BSTR* 类型的参数,需要把一个 char * 类型转换为 BSTR* 类型,不知道如何转换? 由于调用这个函数后需要把这个参数值再取出来所以只能用指针,另外在调用的时候应该用什么类型的数据传递参数呢?大虾帮忙。BSTR bstr = SysAllocString(L"字符串");
buf中的内容也正确!!
我这边用socket发送结构是一点问题也没有啊,而且是在VC和Delphi编的程序间通讯,当然,这时应该注意字节对齐的问题了,在VC程序间,
但是第一种常用