我想把CByteArray类型的转换成CString,我该怎么转?最好别告诉我用循环转换。。
问题点数:20、回复次数:7Top
1 楼Ailong(专家分好难挣啊)回复于 2001-07-11 17:14:03 得分 0
不会吧?我认为这个问题应该不难吧?Top
2 楼zhq2000(方舟)回复于 2001-07-11 22:58:14 得分 15
CByteArray ba;
....
....
CString str;
str.Format("%s" , (LPCTSTR) ba.GetData());
str.SetAt(ba.GetSize() , '\0');
AfxMessageBox(str);
Top
3 楼Fantasia(幻想曲)回复于 2001-07-12 01:48:17 得分 5
直接CString str(ba.GetData())不行吗?
Top
4 楼zhq2000(方舟)回复于 2001-07-12 21:52:13 得分 0
to Fantasia:
可以!
another way:
ba.Add(0); //treat as '\0'
CString str(ba.GetData());Top
5 楼Ailong(专家分好难挣啊)回复于 2001-07-13 17:54:01 得分 0
zhq2000,你的这段代码我用了有问题啊。。。
str.Format("%s" , (LPCTSTR) ba.GetData());
str.SetAt(ba.GetSize() , '\0');
下面是错误对话框:
标题:Microsoft Visual C++ Debug Library
内容:program:XXXXXXXXXXXXXXXXXXX
File:strcore.cpp
Line:604
For information on how your program can cause an assertion failure,see the Visual C++ documentation on asserts.
下面就是重试,终止,忽略。
你给我的代码是不是有问题啊?被assert给找出来了?Top
6 楼Ailong(专家分好难挣啊)回复于 2001-07-13 17:55:00 得分 0
你的第二种方法里面的str是什么?Cstring变量?Top
7 楼zhq2000(方舟)回复于 2001-07-13 21:40:17 得分 0
ba数组的中间是否有值为零的元素? , 如果有,结果肯定不正确,因为零是作为字符串的结束符.
#include<afx.h>
#include<afxcoll.h>
#include<stdio.h>
void main()
{
CByteArray ba;
for(BYTE i=65;i<75;i++)
ba.Add(i);
ba.Add(0); // as '\0'
CString str(ba.GetData());
// or ..
//str.Format("%s" , (LPCTSTR)ba.GetData());
//str.SetAt(ba.GetSize()-1 ,'\0');
printf("the byte array is : %s\n" , (LPCTSTR)str);
}
Top




