一个关于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);
}
}