MFC中Cstring转char*的问题,只能得到第一个字符是为啥呢
在MFC中,给一个Edit控件绑定了Cstring类型的变量m_SendMSG,然后用以下代码想将控件中内容赋给一个char*,但是char*只得到了第一个字符,为啥呢?...
在MFC中,给一个Edit控件绑定了Cstring类型的变量m_SendMSG,然后用以下代码想将控件中内容赋给一个char* ,但是char*只得到了第一个字符,为啥呢?应该怎么做?
代码:
UpdateData(true);
char *buf = (LPSTR)(LPCTSTR)m_SendMSG; 展开
代码:
UpdateData(true);
char *buf = (LPSTR)(LPCTSTR)m_SendMSG; 展开
6个回答
推荐于2016-09-07
展开全部
UpdateData(true);
char* buf = m_SendMSG.GetBuffer(0);
在MFC中,最好不要用char和CString转换。不仅麻烦,还容易出错。
就用单一的CString就好,获得字符串内容用GetBuffer。
如果跨平台试试std::string。
char* buf = m_SendMSG.GetBuffer(0);
在MFC中,最好不要用char和CString转换。不仅麻烦,还容易出错。
就用单一的CString就好,获得字符串内容用GetBuffer。
如果跨平台试试std::string。
追问
提示说 LPWSTR不能用于初始化char*。其实我的目标是将Cstring里的数据用UDP发出去的,然后发送函数的参数类型是 char*
追答
CString orig("Hello, World!");
wcout << orig << " (CString)" << endl;
// Convert to a char*
const size_t newsize = 100;
char nstring[newsize];
strcpy_s(nstring, orig);
strcat_s(nstring, " (char *)");
cout << nstring << endl;
MSDN上的代码。
http://msdn.microsoft.com/zh-cn/library/ms235631(v=VS.80).aspx
展开全部
最简单的就是把项目改成多字节字符集,cstring就等于const
char*,如果需要char*就getbuffer,用完再releasebuffer或是复制一份.
char*,如果需要char*就getbuffer,用完再releasebuffer或是复制一份.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-11-19 · 知道合伙人软件行家
关注
展开全部
char *buf = (LPSTR)(LPCTSTR)m_SendMSG;
buf 没有分配空间
改成:
char buf[100];
strcpy(buf, m_SendMSG);
buf 没有分配空间
改成:
char buf[100];
strcpy(buf, m_SendMSG);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将工程字符集改成“使用多字节字符集”
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该写成char *buf = m_SendMSG.GetBuffer(0);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询