首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

一个关于AnsiString和数组的有关问题

2012-04-11 
一个关于AnsiString和数组的问题虽然有很多人问过这方面的问题,但我还是解决不了啊,请各位帮忙。我有一个数

一个关于AnsiString和数组的问题
虽然有很多人问过这方面的问题,但我还是解决不了啊,请各位帮忙。
我有一个数组char   a[5]
在我给他付值之后从inspector里面看
a:char[5]
Data
[0]       '\x01 '1(0x01)
[1]       '\0 '0(0x00)
[2]       '\x01 '1(0x01)
[3]       'd '100(0x64)
[4]       '\0 '0(0x00)
我想显示出1   0   1   100   0(没有空格)
之后
AnsiString   str;
str   =   StrPas(output);
TMemo1   -> Text   =     str;
这时在从inspetor中看到的str是
Data
:00E07DE0   "\x01 "
在Memo里显示时空白

请问怎么解决?

[解决办法]
Form1-> Memo1-> Lines-> Add(str);
[解决办法]
char a[5] = {1, 0, 1, 100, 0};
String str;
for(int i=0; i <sizeof(a) / sizeof(a[0]); i++)
{
str += String().sprintf( "%d ", a[i]);
}
ShowMessage(str);
[解决办法]
可以用标准库的stringstream
如:
//头文件
#include <sstream>
using namespace std;
//
stringstream s;

char a[5] = {1, 0, 1, 100, 0};
String str;
for(int i=0; i <sizeof(a) / sizeof(a[0]); i++)
{
s < <int(a[i]);
}
str = s.str();
ShowMessage(str);


[解决办法]
先将数组各元素强制转换成int型,然后照老妖的方法拼在一起,你想在Memo里显示的话就把ShowMessage(str);换成Form1-> Memo1-> Lines-> Add(str);
[解决办法]
看错了,这样应该是楼主想要的吧:

char a[5]={ '\x01 ', '\0 ', '\x01 ', 'd ', '\0 '};
String str;
for(int i=0;i <sizeof(a)/sizeof(a[0]);i++)
{
str+=String().sprintf( "%d ",a[i]);
}
Form1-> Memo1-> Lines-> Add(str);
[解决办法]
10000行没问题 o.o "

void __fastcall TForm1::Button1Click(TObject *Sender)
{
int count = 10000;
while(count--) {
char a[5]={ '\x01 ', '\0 ', '\x01 ', 'd ', '\0 '};
AnsiString line;
for(int i = 0 ;i < sizeof(a);i++) {
line += IntToStr(a[i]);
}
Form1-> Memo1-> Lines-> Add(line);
}
}

热点排行