• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > SysAllocString的疑问

SysAllocString的疑问

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了sysallocstring,疑问的图片,疑问的动态图片,反义疑问句的回答,疑问的卡通图片等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: SysAllocString的疑问
描述:

BSTR bstr;
USHORT ch[] = {'1','2','2','3','2','4','2','3','7'};
bstr =SysAllocString(ch);
 int ilen = SysStringLen(bstr);

ch数组里面是9个数字,为什么ilen ==20?不是18吗?并且最后两个字符在内存里面是cc cc
00144FEC  31 00 32 00 32 00 33 00  1.2.2.3.
00144FF4  32 00 34 00 32 00 33 00  2.4.2.3.
00144FFC  37 00 CC CC


解决方案1:

你的第一个问题2楼已经回答了。在末尾的位置你没有加0,然后你既没把一个终止符的字符数组传给了BSTR,也没在SysAllocString函数中指定字符串的长度,系统当然就不知道到底有多少个字符需要穿传进去了,这样的结果就不确定了。你加了一个0,系统就知道字符串的长度,或者指定字符串的长度,也就能够初始化BSTR的前缀长度了。
这个给你找的,比较全面,你可以借鉴一下:
http://xjchilli.blog.163.com/blog/static/453477392010512114148975/

解决方案2:

引用 1 楼 lixung 的回复:
还有就是把上面的bstr转化为char*的时候,后面也不是/0结尾的,我怎么知道pch的长度呢,根据bstr的长度计算??
char* pch = _com_util::ConvertBSTRToString(bstr);

既然转成char*,就可以用strlen了


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 关于SysAllocString和内存泄露的问题
  • SysAllocString与SysAllocStringLen有什么实质区别?
  • 奇怪的错误Lnk2019SysAllocString错误,到底是什么原因,在线等待,急
  • BSTRm_Name=::SysAllocStringL"";会影响其他BSTR变量??
  • SysAllocString后,不去SysFreeString,为什么也没啥影响呀
  • SysAllocString的疑问

相关文章

  • 2017-06-04 ActiveX控件加载文本的问题
  • 2017-06-04 ATL类和MFC类之间传递数据为什么传递不过去?
  • 2017-06-04 vc6利用atlcomwizard开发编译的时候后缀是dll,请问怎么设置为ocx?
  • 2017-06-04 MFC中AdoDataControl获取Recordset的问题
  • 2017-06-05 vc能否调用c#编写的DLL???
  • 2017-06-04 找不到DllRegisterServer的输入点,为什么啊?
  • 2017-06-04 如何在Internet上调用DCOM组件,大家帮帮忙
  • 2017-06-04 获得容器的HINSTANCE???
  • 2017-06-04 atl写的dll,服务器没有装visualstudio,没法注册
  • 2017-06-04 有谁知道每次使用MSCOMM控件接收和传送数据前需不需要清除接收和输入缓冲区,怎么清除?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 如何读出保存在永久介质上的IStream流?
    • 请教高手,cominterface中的method可以用结构作为参数吗?
    • 自己写了一个ocx控件,出了点小问题,大家看看是为什么。谢谢
    • 各位请问我建立了多个线程,如何从主线程通知其他线程?
    • 100分求助VC往EXCEL单元格写字问题
    • ATL跟Activex、自动化服务器有什么区别又有什么联系?
    • 请教一下怎么使用LPDISPATCHFAR的参数我看了一些以前的贴,还是不懂
    • 向导生成的MFCActivex,Debugregsvr32出错Realse没有错误
    • CreateProcess的问题,希望有人可以解答
    • 关于dll中显示对话框的问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有