【MFC】CString的一点tips
来源:互联网 发布:康奈尔大学学费知乎 编辑:程序博客网 时间:2024/05/16 14:51
CString是一种非常难用的数据结构,因为和标准库的string非常类似又有很多区别,所以在使用的时候很易错。这里就简单总结一下编程中遇到的关于CString的常见问题——
1.类型转换
CString与其他类型的转化非常常见。其中比较关键的是
CString -> char*
CString str;char* str2=str.GetBuffer(str.GetLength());str.ReleaseBuffer(str.GetLength());//这个Release必不可少//因为GetBuffer()会锁定str使其无法变化注意在改变str的值时,str2也会跟着改变,因为str2只是指向str第一个字符的指针而已。如果要独立使用str2,需要将str的内容拷贝出来。
CStringA str = "Good";char* str2 = new char[str.GetLength()+1]; //要+1,因为字符串数组是以'\0'结尾的strcpy(str2,str.GetBuffer(str.GetLength()));str.ReleaseBuffer(str.GetLength());这样str2就不会随着str改变了。
注:vs2013使用strcpy要在C\C++预处理器中加_CRT_SECURE_NO_WARNINGS
CString转成char*后就可以和标准库里的string互相转化了,不再赘述。
CString -> int
CString s;int num=_ttoi(s.GetBuffer(s.GetLength()));s.ReleaseBuffer(s.GetLength());double就是_ttof()
int -> Cstring
CString s;int num = 100;s.Format("%d", num);double也类似
CStringA 和CStringW的转化
函数CW2A()和CA2W()非常好用。
2.关于GetBuffer()
GetBuffer()会将CString 的内存区锁定,在ReleaseBuffer之前是不能改变大小的。所以每一个GetBuffer之后都必须跟ReleaseBuffer,否则极易出错。同时GetBuffer和ReleaseBuffer的参数必须一致,推荐GetLength获得长度。
0 0
- 【MFC】CString的一点tips
- MFC中CString的一点小错误
- Xming的一点tips
- CString的一点获知
- MFC CString 的用法
- MFC CString的用法
- MFC CString的使用
- eval函数的一点tips
- MFC的CString 的效率
- MFC的CString类详解
- MFC CString 的一些函数
- MFC的字符串CString处理
- MFC的字符串CString处理
- MFC Cstring 类的用法
- MFC Cstring 类 的 用法
- MFC的字符串CString处理
- MFC的一点思考
- 关于document.domain的一点tips
- 对于一个文件夹中的所有txt文件进行遍历的程序
- 使用corncernStone,Log时间过长解决方法
- Struts2学习笔记(六)校验框架
- Android 调试 自测工具01 (Hugo 、Timber 、Scalpel )
- list排序
- 【MFC】CString的一点tips
- Android--多线程之Handler
- 20个代码生成框架
- <!DOCTYPE html>声明
- trim 函数c实现
- JAX-RS开发(三):ajax访问REST服务时的跨域问题以及jsonp解决方案
- Eclipse配置hadoop2.2.0环境
- [线段树+离线处理] hdu 4417 Super Mario
- Android 调试工具 Stetho 使用学习