char指针数组转换为AnsiString 的困惑

creativezj 2005-01-12 03:54:34
定义了char类型数组,程序需要强制转换为AnsiString类型,但遇到'0'时,AnsiString认为结束了??
char p[] = {0x00,0x01,0x02,0x03,0x04};
AnsiString ConvertStr = AnsiString(p);
Name->Text = p;


程序运行,p的数据为空。
同理,一个char数组,只要里面含有'0'字符,转换为AnsiString 都是只转换'0'前面的字符,怎么解决?
...全文
367 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
unixzyy 2005-01-20
  • 打赏
  • 举报
回复
在C中.char 数组类型是有长度的,判断此数组结束标志就是"\0",其值就是0,这个0不是字符"0",而是"\0",所以你不能这样用的.
smalltownboy 2005-01-19
  • 打赏
  • 举报
回复
学习
cczlp 2005-01-13
  • 打赏
  • 举报
回复
char p[] = {'0', '1','2','3','4'};
Javpp 2005-01-13
  • 打赏
  • 举报
回复
你应该把p定义为unsigned char

然后转换
fidt982 2005-01-13
  • 打赏
  • 举报
回复
想了个S办法,转换成字符串时每两个数之间加个空格
ssyfrank 2005-01-13
  • 打赏
  • 举报
回复
学习!
xrdsheng 2005-01-13
  • 打赏
  • 举报
回复
char p[] = {0x00,0x01,0x02,0x03,0x04};//0x00为串的结束符
char p[] = {0x01,0x02,0x03,0x00};//OK
Persistent8813 2005-01-13
  • 打赏
  • 举报
回复
中间含有'\0'字符就不能用ANSISTRING
yhec 2005-01-13
  • 打赏
  • 举报
回复
AnsiString中不能有'\0'字符,它中结束符,
楼主说的是哪里来的函数,怎考虑不周呢
铖邑 2005-01-13
  • 打赏
  • 举报
回复
char p[] = {0x00,0x01,0x02,0x03,0x04};
AnsiString ConvertStr(p, sizeof(p));
kmfangxun 2005-01-12
  • 打赏
  • 举报
回复
char p[] = {0x00,0x01,0x02,0x03,0x04,0x34};
String ConvertStr="";
for(int i=0;i<6;i++)
{
if(p[i]==0)
continue ;

ConvertStr+=String(p[i]);
}

Memo1->Text =ConvertStr;
creativezj 2005-01-12
  • 打赏
  • 举报
回复
哎,郁闷,需要重载AnsiString的操作符吗?有没有别的方法?
Maconel 2005-01-12
  • 打赏
  • 举报
回复
数组不是空的,但char*型的字符串,是按遇到第一个'\0'为结尾的,你的第一个就是'\0',所以转为AnsiString 时,认为就到头了。
3996906 2005-01-12
  • 打赏
  • 举报
回复
数组p不会是空串

-------------------------------------------

但AnsiString()操作符认为是,你要用就没办法,除非你自己重载
creativezj 2005-01-12
  • 打赏
  • 举报
回复

因为p[0] == 0x00;
所以你这个p其实是个空串????


数组p不会是空串


mopyman 2005-01-12
  • 打赏
  • 举报
回复
char类型数组就是一个空终结串,以0x00结尾的,所以这样是不行的
fidt982 2005-01-12
  • 打赏
  • 举报
回复
关注
3996906 2005-01-12
  • 打赏
  • 举报
回复
确实

char p[] = {0x02,0x01,0x02,0x03,0x04};
AnsiString ConvertStr = AnsiString(p);

就有结果了
chiengod 2005-01-12
  • 打赏
  • 举报
回复
试试:
char p[] = {'0x00','0x01','0x02','0x03','0x04'};
AnsiString ConvertStr = AnsiString(p);
ShowMessage(ConvertStr);
samchoy 2005-01-12
  • 打赏
  • 举报
回复
因为p[0] == 0x00;
所以你这个p其实是个空串
加载更多回复(1)

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧