为什么将LPSTR转为CString后,在调试时看到的都是乱七八糟的东西,而不是字符 打印出来也看不懂 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 试了一下,有汉字也没事LPSTR p="abcd呵呵";CString str(p);AfxMessageBox(str); 你是不是用cout了?兄弟也遇到过,显式转换一下就可以了,如:CString s = "abcd";cout << (LPCTSTR)s << endl;也不知道为什么,希望大牛解释解释。 LPSTR 就是 char *是一个字符串指针,仅仅是一个指针,它不包含其他信息,如字符串所占有的内存.这个指针可以随意改变其指向.CString是一个字符串对象,在使用CString时应该有的观点是它是包含了整个字串的所有信息,如内存位置,缓冲区大小等等.这时这个字符串是一个整体.把LPSTR转化为CString一般是先定义一个临时的CString对象,此时其实是重新分配了内存.就如akiko(弥弥) 的做法:CString str(p);把CString转化为LPSTR的一般做法是CString strTmp = "asdfd";strTmp.LockBuffer(); // 得的LPSTR只是临时使用strTmp.UnLockBuffer();可以使用LPCTSTR参数的地方可以直接使用CString因为CString重载了LPCSTRsteedhorse(晨星) 的语句cout << (LPCTSTR)s << endl;其实可以直接使用:cout << s << endl; 关于主窗口如何向对话框传递数据以及传完数据之后的更新显示 相对路径 问一下,我回复的帖子明明给我分了,怎么不给我加上呢? 30分求助(只有这么多了,都给了),为什么托盘图标老是没有颜色???在线等,回答上立即结贴 CButton的小问题 谁知道怎么在UltraEdit里编译Java程序:) 判断文本文件是否读到了结尾? 这段语句是何意? 创建文件夹? VC为什么不行呀,但我还是最在VC!(进来看看) 在SDK编程中,每个控件都是子窗口,我有个问题请教! 一个关于_CommandPtr的问题!!!!!!!!!!
LPSTR p="abcd呵呵";
CString str(p);
AfxMessageBox(str);
CString s = "abcd";
cout << (LPCTSTR)s << endl;也不知道为什么,希望大牛解释解释。
是一个字符串指针,仅仅是一个指针,它不包含其他信息,如字符串所占有的内存.这个指针可以随意改变其指向.CString是一个字符串对象,
在使用CString时应该有的观点是它是包含了整个字串的所有信息,如内存位置,缓冲区大小等等.
这时这个字符串是一个整体.把LPSTR转化为CString一般是先定义一个临时的CString对象,
此时其实是重新分配了内存.
就如akiko(弥弥) 的做法:
CString str(p);把CString转化为LPSTR的一般做法是
CString strTmp = "asdfd";
strTmp.LockBuffer(); // 得的LPSTR只是临时使用
strTmp.UnLockBuffer();可以使用LPCTSTR参数的地方可以直接使用CString
因为CString重载了LPCSTR
steedhorse(晨星) 的语句
cout << (LPCTSTR)s << endl;
其实可以直接使用:
cout << s << endl;