CString不能转换成LPTSTR
来源:互联网 发布:苹果软件开发培训班 编辑:程序博客网 时间:2024/05/16 06:44
在大多数情况下,CString 转换成 LPTSTR是非常容易的,如果函数要求传入LPTSTR型的参数,直接传一个CString也行,但是在visual studio 2008中,却偶尔会出现不能转换的情况,这个为什么呢?
有人以为这是ASCII(多字节)与Unicode(宽字节)之间的问题,其实不是,要知LPTSTR这个宏是随编译器参数不同而不同的,如果在编译器——常规里面设置程序按ASCII编译,那LPTSTR就表示char*,如果选择按Unicode编译那就是wchar_t*。CString也是如此,随编译器选项的不同,可以是ASCII字符串也可以是Unicode字符串。那么CString与LPTSTR,要么全是多字节,要么全是宽字节,不可能存在两者之间不能转换的问题。
那么为什么有时候不能转换呢?我发现,如果是把CString作为参数传入SetWindowText函数,不会编译错误,如果传入GetWindowText,就会出错,而这两个函数都是以LPTSTR为参数的啊!
原来,在SetWindowText中,只对LPTSTR参数进行读取,而在GetWindwText中,会对LPTSTR参数进行写入,如果CString还没有初始化,就对CString进行写入,无疑是非常危险的,所以实际上,不允许没有初始化的CString转换为需要写入的LPTSTR实际上是出于安全的考虑。
所以解决方法就是先申请空间,如:
TCHAR s1[100];
再把s1作为参数传入GetWindowText。
转自:http://blog.sina.com.cn/s/blog_4ed027020100cue7.html
- CString不能转换成LPTSTR
- LPTSTR CString 相互转换
- vc error C2664: 不能将参数 2 从“CString”转换为“LPTSTR”解决方法
- LPTSTR CString 相互转换 CString char * 相互转换
- LPTSTR CString 相互转换 CString char * 相互转换
- LPTSTR CString 相互转换 CString char * 相互转换
- LPTSTR CString 相互转换 CString char * 相互转换
- LPTSTR CString 相互转换 CString char * 相互转换
- LPTSTR CString 相互转换 CString char * 相互转换
- LPTSTR CString 相互转换 CString char * 相互转换
- LPTSTR与CString、char *与CString的相互转换
- VS2008下,CString与string互转换,LPTSTR转CString,char * 转LPTSTR
- char* 与LPTSTR (或LPCTSTR)及CString 之间的转换
- MFC中的CString和char *,LPTSTR,LPCTSTR的转换
- int CWnd::GetWindowTextW(LPTSTR,int) const”: 不能将参数 1 从“char [10]”转换为“LPTSTR”
- int CWnd::GetWindowTextW(LPTSTR,int) const”: 不能将参数 1 从“char [10]”转换为“LPTSTR”
- int CWnd::GetWindowTextW(LPTSTR,int) const”: 不能将参数 1 从“char [10]”转换为“LPTSTR”
- 不能将参数 1 从“char [10]”转换为“LPTSTR”
- 关于tomcat7 java.lang.ClassCastException: org.apache.jasper.el.ELContextImpl的错误
- 在线制作动态图(gif)
- POJ 1160 Post Office
- 黑马程序员-(5)Java基础语法之数组
- C语言指针的*p++ ,*p(++), (*p)++,*++p的使用
- CString不能转换成LPTSTR
- 黑马程序员-(6)Java基础之面向对象(一)封装
- 汇编标志位
- Android-Java移动GIS开源项目Osmdroid分析手记(一):第一次亲密接触
- UVa 10069 - Distinct Subsequences
- 使用twitter app原生接口登录(Native)
- 【练习12】 贪心算法 1003 Moving Tables
- uva 10285 - Longest Run on a Snowboard
- 黑马程序员-(7)Java基础之面向对象(二)静态