SysAllocString,需要一个olechar类型的参数。
这里的字符串为什么要加一个L呢?
题外话,还有有时需要_T,看了就晕。
宽子节,有时候,要机加_T。
谢谢。
11 个解决方案
#1
在com处理中必须使用宽字符
#2
_T是为了ascii和uniode
的兼容
_L是为了定义宽字符时,被编译器识别!
的兼容
_L是为了定义宽字符时,被编译器识别!
#3
大家说的很详细了,可以结贴了。
#4
基本可以结贴了但是我还要过一会给分,不好意思。
我不是太清楚,com处理中必须使用宽字符,也就是所谓的BSTR了,是么??
这个L就可以转化为宽字符么。
还有谢谢FAICHEN(CC)。
但是我不明白,ascii和unicode,什么时候需要兼容呀。
ascii就是我们说的"a,b,c,*,8,7,1"
unicode 就是“人,口,手”等等宽字节么。
谢谢大家,接续回答。
我不是太清楚,com处理中必须使用宽字符,也就是所谓的BSTR了,是么??
这个L就可以转化为宽字符么。
还有谢谢FAICHEN(CC)。
但是我不明白,ascii和unicode,什么时候需要兼容呀。
ascii就是我们说的"a,b,c,*,8,7,1"
unicode 就是“人,口,手”等等宽字节么。
谢谢大家,接续回答。
#5
大家继续说点儿什么呀。
#6
你不应该这么看unicode和ascii两者的区别
应该说是ASCII只用一个字节表示,它定义的范围为0X00-0X7F,
而UNICODE是由两个字表示,范围可以达到65536,在前面128个字符(也就是0X0000-0X007F)兼容ASCII,后面的则分段表示各个国家的文字,符号。
所以在字符串前面加上一个L,编译器编译时会用两个字节来表示一个字符。
什么时候兼容?
如果你的的COM只是要自己用,那么你可以自定义,如果是要给别人用的,那就要兼容了。最好是都做成可以兼容的。
应该说是ASCII只用一个字节表示,它定义的范围为0X00-0X7F,
而UNICODE是由两个字表示,范围可以达到65536,在前面128个字符(也就是0X0000-0X007F)兼容ASCII,后面的则分段表示各个国家的文字,符号。
所以在字符串前面加上一个L,编译器编译时会用两个字节来表示一个字符。
什么时候兼容?
如果你的的COM只是要自己用,那么你可以自定义,如果是要给别人用的,那就要兼容了。最好是都做成可以兼容的。
#7
加个L标识“Developers Samples_Zoomout C++”是以宽字符格式存储和处理!
而加_T则是让VC根据环境设置(ascii或unicode)自己决定后面字符串的处理格式!
而加_T则是让VC根据环境设置(ascii或unicode)自己决定后面字符串的处理格式!
#8
BSTR是另一种表示字符型字符串的方法, 一个BSTR是这样的指针, 它指向在前面带有字符数的零结束字符数组, 所以, BSTR可以指向二进制字符, 包括零,
但是!!!!
要注意你能简单的删除字符串指针, 因为分的内存是从字符数开始的, 但BSTR是指向的第一个字符(或是零长的串尾)。
所以WINDOWS另有SysAllocStrint SysFreeString来分配和删除这个BSTR对象
但是!!!!
要注意你能简单的删除字符串指针, 因为分的内存是从字符数开始的, 但BSTR是指向的第一个字符(或是零长的串尾)。
所以WINDOWS另有SysAllocStrint SysFreeString来分配和删除这个BSTR对象
#9
加L表示宽字节的
_T是代表你的工程环境设置是不是_UNICODE或者_MBCS而进行不同形式的变换,这仅仅跟工程环境设置有关,所以,不要认为_T是万能的
_T是代表你的工程环境设置是不是_UNICODE或者_MBCS而进行不同形式的变换,这仅仅跟工程环境设置有关,所以,不要认为_T是万能的
#10
UNICODE的字符串咯!windows核心编程里面讲过的。
#11
gz
#1
在com处理中必须使用宽字符
#2
_T是为了ascii和uniode
的兼容
_L是为了定义宽字符时,被编译器识别!
的兼容
_L是为了定义宽字符时,被编译器识别!
#3
大家说的很详细了,可以结贴了。
#4
基本可以结贴了但是我还要过一会给分,不好意思。
我不是太清楚,com处理中必须使用宽字符,也就是所谓的BSTR了,是么??
这个L就可以转化为宽字符么。
还有谢谢FAICHEN(CC)。
但是我不明白,ascii和unicode,什么时候需要兼容呀。
ascii就是我们说的"a,b,c,*,8,7,1"
unicode 就是“人,口,手”等等宽字节么。
谢谢大家,接续回答。
我不是太清楚,com处理中必须使用宽字符,也就是所谓的BSTR了,是么??
这个L就可以转化为宽字符么。
还有谢谢FAICHEN(CC)。
但是我不明白,ascii和unicode,什么时候需要兼容呀。
ascii就是我们说的"a,b,c,*,8,7,1"
unicode 就是“人,口,手”等等宽字节么。
谢谢大家,接续回答。
#5
大家继续说点儿什么呀。
#6
你不应该这么看unicode和ascii两者的区别
应该说是ASCII只用一个字节表示,它定义的范围为0X00-0X7F,
而UNICODE是由两个字表示,范围可以达到65536,在前面128个字符(也就是0X0000-0X007F)兼容ASCII,后面的则分段表示各个国家的文字,符号。
所以在字符串前面加上一个L,编译器编译时会用两个字节来表示一个字符。
什么时候兼容?
如果你的的COM只是要自己用,那么你可以自定义,如果是要给别人用的,那就要兼容了。最好是都做成可以兼容的。
应该说是ASCII只用一个字节表示,它定义的范围为0X00-0X7F,
而UNICODE是由两个字表示,范围可以达到65536,在前面128个字符(也就是0X0000-0X007F)兼容ASCII,后面的则分段表示各个国家的文字,符号。
所以在字符串前面加上一个L,编译器编译时会用两个字节来表示一个字符。
什么时候兼容?
如果你的的COM只是要自己用,那么你可以自定义,如果是要给别人用的,那就要兼容了。最好是都做成可以兼容的。
#7
加个L标识“Developers Samples_Zoomout C++”是以宽字符格式存储和处理!
而加_T则是让VC根据环境设置(ascii或unicode)自己决定后面字符串的处理格式!
而加_T则是让VC根据环境设置(ascii或unicode)自己决定后面字符串的处理格式!
#8
BSTR是另一种表示字符型字符串的方法, 一个BSTR是这样的指针, 它指向在前面带有字符数的零结束字符数组, 所以, BSTR可以指向二进制字符, 包括零,
但是!!!!
要注意你能简单的删除字符串指针, 因为分的内存是从字符数开始的, 但BSTR是指向的第一个字符(或是零长的串尾)。
所以WINDOWS另有SysAllocStrint SysFreeString来分配和删除这个BSTR对象
但是!!!!
要注意你能简单的删除字符串指针, 因为分的内存是从字符数开始的, 但BSTR是指向的第一个字符(或是零长的串尾)。
所以WINDOWS另有SysAllocStrint SysFreeString来分配和删除这个BSTR对象
#9
加L表示宽字节的
_T是代表你的工程环境设置是不是_UNICODE或者_MBCS而进行不同形式的变换,这仅仅跟工程环境设置有关,所以,不要认为_T是万能的
_T是代表你的工程环境设置是不是_UNICODE或者_MBCS而进行不同形式的变换,这仅仅跟工程环境设置有关,所以,不要认为_T是万能的
#10
UNICODE的字符串咯!windows核心编程里面讲过的。
#11
gz