c++Builder中如何将AnsiString中的数赋值给字符串数组?

likelei123 2015-01-07 05:13:20
我定义了一个AnsiString sStr;和AnsiString sChar;
通过 for(int n=0;n<64;n++)
{
sStr +=sChar.sprintf("%d ",m_tPort.m_RecData[n]);
}
向 sStr写入了64个字节的数据,其中m_tPort.m_RecData[n]是下位机通过USB上传的数据,通过测试数据已经写入 sStr中,这一部分都没有问题。
问题是:现在想把 sStr里的数据写入到字符数组里面,比如定义一个char[64],然后把 sStr里面那64个数放入char[64]里面,哪位高手知道怎么弄?先谢谢了
...全文
566 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝龙哥 2015-02-22
  • 打赏
  • 举报
回复
这样试试: AnsiString转char *: char *strSrc; strSrc=new char[Edit1->text.Length()+1]; strcpy(strSrc,Edit1->text.c_str()); strSrc[Edit1->text.Length()]='\0'; 注意,不可直接赋值:char *ch = Test.c_str(); // 这个实际上是有问题的
chinayu2007 2015-02-11
  • 打赏
  • 举报
回复
AnsiString支持象数组索引一样访问,把你的代码贴出来看看,是什么问题?
sdragonx 2015-01-14
  • 打赏
  • 举报
回复
你这写入的也不是64子节点数据 m_tPort.m_RecData的类型即使是char类型的,生成最后的字符串最多也要5个字节“-128 ” 干嘛不直接用数组操作,省的转换
sdragonx 2015-01-14
  • 打赏
  • 举报
回复
如果你m_tPort.m_RecData[n]的格式是固定的,建议用 int[64 用数组操作操作你的数据。毕竟AnsiString 是操作字符串的,你这样来回转换是要耗费事件的。 按你的问题,用TStringList就能解决 TStringList *list = new TStringList; list->DelimitedText = "111 222 333"; list->Delimiter = ' '; int n = list->Strings[0].ToInt(); delete list; 另外你的数据都是空格分割的,自己解析也比较简单。
likelei123 2015-01-07
  • 打赏
  • 举报
回复
3楼说的用循环的方式不行,只能得到前面4个数,其他的都得不到。但是用strcpy函数可以,不知道是为什么
zhgwbzhd 2015-01-07
  • 打赏
  • 举报
回复
strcpy可能不行。 万一遇到你的数据中间有NULL值,就会复制少了。 memcpy可以用。 实在不行用循环吧。 AnsiString sStr; char sch[64]; int i,j; j=sStr.length();//或者你已经知道前面字符串的长度。 for(i=0;i<j;i++) { sch[i]=sStr[i+1];//AnsiString的第一个下标从1开始,数组是从0开始。 }
likelei123 2015-01-07
  • 打赏
  • 举报
回复
你说的应该是strcpy(char,sStr.c_str());吧?
缘中人 2015-01-07
  • 打赏
  • 举报
回复
strcpy(sStr,sStr.c_str()); 不行的话用memcpy试试

13,826

社区成员

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

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