关于CString数据与char数组内容的转换!

charm_a[512];CStringd="";d.Format("%2.2X",m_a[i]&0x000000ff);(GetDlgItem(i))->SetWind... char m_a[512];
CString d="";
d.Format("%2.2X",m_a[i]&0x000000ff);
(GetDlgItem(i))->SetWindowText(CString(d));
d="";

如果现在我有Cstring d的值,怎么得出 m_a;
展开
 我来答
roy_po
2011-08-20 · TA获得超过411个赞
知道小有建树答主
回答量:206
采纳率:0%
帮助的人:127万
展开全部
使用CString成员函数GetBuffer(),具体使用方法参照MSDN或者百科如:
m_a=d.GetBuffer();
追问
谢谢!我还是觉得我的问题没有解决。
m_a的格式是16进制的!所以这里至少有个进制转换。
追答
CString::GetBuffer

LPTSTR GetBuffer( int nMinBufLength );
throw( CMemoryException );

返回值:一个指向对象的(以空字符结尾的)字符缓冲区的LPTSTR指针。

参数: nMinBufLength 字符缓冲区的以字符数表示的最小容量。这个值不包括一个结尾的空字符的空间。

说明:
此成员函数返回一个指向CString对象的内部字符缓冲区的指针。返回的LPTSTR不是const,因此可以允许直接修改CString的内容。
如果你使用由GetBuffer返回的指针来改变字符串的内容,你必须在使用其它的CString成员函数之前调用ReleaseBuffer函数。
在调用ReleaseBuffer之后,由GetBuffer返回的地址也许就无效了,因为其它的CString操作可能会导致CString缓冲区被重新分配。如果你没有改变此CString的长度,则缓冲区不会被重新分配。
当此CString对象被销毁时,其缓冲区内存将被自动释放。
注意,如果你自己知道字符串的长度,则你不应该添加结尾的空字符。但是,当你用ReleaseBuffer来释放该缓冲区时,你必须指定最后的字符串长度。如果你添加了结尾的空字符,你应该给ReleaseBuffer的长度参数传递-1,ReleaseBuffer将对该缓冲区执行strlen来确定它的长度。

示例:下面的例子说明了如何用CString::GetBuffer。
// CString::GetBuffer例子
CString s( "abcd" );
#ifdef _DEBUG
afxDump << "CString s" << s << "\n";
#endif
LPTSTR p = s.GetBuffer( 10 );
strcpy( p, "Hello" ); // 直接访问CString对象。
s.ReleaseBuffer( );
#ifdef _DEBUG
afxDump << "CString s " << s << "\n";
#endif
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
海涛大兴
2011-08-20 · TA获得超过641个赞
知道小有建树答主
回答量:434
采纳率:100%
帮助的人:312万
展开全部
CString str("abcdefg");
char *pStr = (LPSTR)(LPCTSTR)str; //转换为字符数组
char name[50];
strcpy(name, pStr);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qingmie2009
2011-08-30
知道答主
回答量:16
采纳率:0%
帮助的人:5.4万
展开全部
CString str("abcdefg");
char *pStr = (LPSTR)(LPCTSTR)str; //转换为字符数组
char name[50];
strcpy(name, pStr);
这个正解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式