关于CString的用法的问题

CString和char*,constchar*,LPCSTR,LPCTSTR,这些之间到底是什么关系呢?学了MFC很久,这些还是不怎么明白~~~另外,我看到了一些代码:... CString和char*,const char*,LPCSTR,LPCTSTR,这些之间到底是什么关系呢?学了MFC很久,这些还是不怎么明白~~~

另外,我看到了一些代码:
CString *str= new CString(); // 在堆里申请,线程退出后销毁
*str = "jijij ";

AfxBeginThread(MyThreadProc, (LPVOID)str);

这个是多线程里面的,请问CString有这样的用法吗?
另外,AfxBeginThread函数的第二个参数传递需要这样在堆里申请内存吗?

谢谢了\(^o^)/~
展开
 我来答
百度网友3038d88
2012-11-02 · TA获得超过1097个赞
知道小有建树答主
回答量:1670
采纳率:0%
帮助的人:1167万
展开全部
AfxBeginThread函数的第二个参数传递需要这样在堆里申请内存吗?

不需要, 你自己掌握好变量的 声明周期即可.
在一个函数定义的局部变量. 那么这个函数结束. 变量就没了.

CString和char*,const char*,LPCSTR,LPCTSTR,这些之间到底是什么关系呢

CString 是MFC类库
char*,const char* 是类型 (+const表示常量,不可修改)

LPCSTR,LPCTSTR 这些实际上 就是 char * , 我这么说有点笼统.

你写在vs 或者 vc编辑器里. goto definiton 一下看看就知道了.
追问
关于CString* 这种用法,我试过了,的确是正确的,那我想问下,下面的*s1是什么意思
O(∩_∩)O谢谢 ,可不可以写成s1=" s has been changed!";

CString* s1=(CString*)pParam; //不管你传递的是什么类型,都可以通过这种方式转换后使用。

*s1=" s has been changed!";
追答
*s1  就是 CString 对象了..
CString s1 ; 你可以调用 s1.Format() ..
如果你
CString *s1 ;那你要这么调用 s1->Format()... 或者 (*s1).Format()...
a349160476
2012-11-02 · 超过14用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:42.9万
展开全部
CString和char*,const char*,LPCSTR,LPCTSTR,这些很操蛋。我也烦这个。

CString 一般是 CString str = _T("string"); MFC里面用的比较多
char* 就是C++的
const char* 常指针
LPCSTR 是常字符串 一般在MFC中用
LPCTSTR 是根据工程 字符集来 确定是 unicode字符串什么的
自己多用用就好了 。我用了半年多 还是很不习惯。

关于线程 第二个参数是指针 ,指向有效地址 ,给你在线程里用的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
305508676
2012-11-02 · TA获得超过649个赞
知道小有建树答主
回答量:627
采纳率:50%
帮助的人:601万
展开全部
没有这样的用法,CString 是一个类,
追问
如果是一个类的话,那应该有这种用法呀,比如CFile,CBitmap类等,
都有CFile*,CBitmap*的用法呀~~
追答
关键是 他的内存大小不固定,根据所存的字符串进行动态申请内存的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式