酱坛子

专注C++技术 在这里写下自己的学习心得 感悟 和大家讨论 共同进步(欢迎批评!!!)

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  65 Posts :: 16 Stories :: 236 Comments :: 0 Trackbacks

公告

王一伟 湖南商学院毕业 电子信息工程专业

常用链接

留言簿(19)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 352906
  • 排名 - 53

最新随笔

最新评论

阅读排行榜

评论排行榜

vc中的数据类型

1 、CString to  char *
// 经过类型强制转换,可以将CString类型转换成char*,例如:
CString cStr  =   " Hello,world! " ;
char *  zStr  =  ( char * )(LPCTSTR)cStr;
//  cstring与int转换
int  StringToInt(CString source)
{
    
char   * buff  =  source.GetBuffer(source.GetLength());
    
int  i  =  atoi(buff);
    source.ReleaseBuffer();
    
return  i;
}

2 char *  to CString
// char*类型可以直接给CString,完成自动转换,例如:
char *  zStr  =   " Hello,world! " ;
CString cStr 
=  zStr;

3 、CString to LPCSTR
// 将CString转换成LPCSTR,需要获得CString的长度CString cStr = _T("Hello,world!");
int  nLen  =  cStr.GetLength();
LPCSTR lpszBuf 
=  cStr.GetBuffer(nLen);

4 、CString to LPSTR
// 这个和第3个技巧是一样的,例如:
CString cStr  =  _T( " Hello,world! " );
int  nLen  =  str.GetLength();
LPSTR lpszBuf 
=  str.GetBuffer(nLen);
在vc中关于类型的转换比较麻烦,新手开发vc程序遇到的第一个问题往往和这个有关。
近日从网上以及自己的经验,搜索了一些相关资料。
PCXSTR,如果不是在 Unicode 下,PCXSTR const char* 是相同的;
CString 作为指向字符的非常数指针来直接访问时,请使用 GetBuffer 和 ReleaseBuffer 成员函数。
使用 AllocSysString 和 SetSysString 成员函数来分配和设置用于自动化(以前称为 OLE 自动化)中的 BSTR 对象。
一个 CString 对象可存储多达 INT_MAX (2,147,483,647) 个字符。TCHAR 数据类型用来获取或设置 CString 对象中的单个字符。与字符数组不同,CString 类具有内置内存分配能力。

从 MFC 4.0 版本开始,当复制 CString 对象时,MFC 增加引用计数而不是复制数据。这使得按值传递参数和按值返回 CString 对象更为高效。这些操作将调用复制构造函数,有时甚至不只一次。增加引用计数会减少这些普通操作的系统开销,并且使人更愿意使用 CString

随着每个副本的销毁,原对象中的引用计数也会相应减少。直到原 CString 对象的引用计数减少到零时才会销毁该对象。

可使用 CString 成员函数 LockBuffer 和 UnlockBuffer 来禁用或启用引用计数。

posted on 2007-03-25 23:59 @王一伟 阅读(1253) 评论(1)  编辑 收藏 引用

Feedback

# re: vc中的数据类型 2011-05-30 11:28 111111111
你这个方法现在在VS2008中已经不好使了哦!!   回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理