文字符串的问题
String t;
char* pSrc;
char* pDst;
t=Edit1->Text;
pSrc=t;
String d;
pDst=d;
在 pSrc=t;出错是怎么会是啊??
问题点数:20、回复次数:7Top
1 楼myy()回复于 2005-05-30 10:57:30 得分 5
如果你要把 AnsiString 变成 char* 使用,请这样(举例):
// AFunc(char* Src,char* Dst);
AnsiString s=Edit1->Text;
char d[1024];
AFunc(t.c_str(), d);
...Top
2 楼defyctive(格风)回复于 2005-05-30 11:18:06 得分 0
String t;
char* pSrc;
char* pDst;
t=Edit1->Text;
pSrc=t;
String d;
pDst=d;
int nSrcLength=11;
int nDstLength; // 目标字符串长度
char ch; // 用于保存一个字符
// 复制串长度
nDstLength = nSrcLength;
// 两两颠倒
for(int i=0; i<nSrcLength;i+=2)
{
ch = *pSrc++; // 保存先出现的字符
*pDst++ = *pSrc++; // 复制后出现的字符
*pDst++ = ch; // 复制先出现的字符
}
// 源串长度是奇数吗?
if(nSrcLength & 1)
{
*(pDst-2) = 'F'; // 补'F'
nDstLength++; // 目标串长度加1
}
// 输出字符串加个结束符
*pDst = '\0';
// 返回目标字符串长度
//return nDstLength;
Edit1->Text=d;
比如交换13880751773 号码的奇偶位的这个算法怎么不对阿
Top
3 楼zdhsoft(冬瓜猫)回复于 2005-05-30 11:37:08 得分 0
BCB中没有定义这样的运算符吧!
这样才行!pSrc = t.c_str()
还有,BCB的AnsiString不支持对字符串通过指针来访问!你可以看看BCB的AnsiString源代码!
Top
4 楼F117p(走两步,你走两步?)回复于 2005-05-30 11:39:37 得分 15
我改了一些地方,你看适合你不(编译通过)
String t;
char* pSrc;
char* pDst;
t=Edit1->Text;
String d;
d="";
int nSrcLength=11;
pSrc=new char[nSrcLength];
pDst=new char[nSrcLength];
strcpy(pSrc,t.c_str());
strcpy(pDst,d.c_str());
int nDstLength; // 目标字符串长度
char ch; // 用于保存一个字符
// 复制串长度
nDstLength = nSrcLength;
// 两两颠倒
for(int i=0; i<nSrcLength;i+=2)
{
ch = pSrc[i]; // 保存先出现的字符
pSrc[i] = pSrc[i+1]; // 复制后出现的字符
pSrc[i+1] = ch; // 复制先出现的字符
}
// 源串长度是奇数吗?
if(nSrcLength & 1)
{
pSrc[nSrcLength] = 'F'; // 补'F'
nDstLength++; // 目标串长度加1
}
// 输出字符串加个结束符
//*pDst = '\0';
// 返回目标字符串长度
//return nDstLength;
// Edit1->Text=d;
Edit1->Text =String(pSrc);
delete []pSrc;
delete []pDst;Top
5 楼defyctive(格风)回复于 2005-05-30 13:07:29 得分 0
f117p大哥 我把它写成函数怎么就编译不过了??:(
String gettel(String tel)
{
String t;
t="";
char* pSrc;
char* pDst;
t= tel;
t=t+'F';
String d;
d="";
int nSrcLength=11;
pSrc=new char[nSrcLength];
strcpy(pSrc,t.c_str());
char ch; // 用于保存一个字符
// 两两颠倒
for(int i=0; i<nSrcLength;i+=2)
{
ch = pSrc[i]; // 保存先出现的字符
pSrc[i] = pSrc[i+1]; // 复制后出现的字符
pSrc[i+1] = ch; // 复制先出现的字符
}
// 输出字符串加个结束符
pSrc[nSrcLength+1] = '\0';
return String(pSrc);
delete []pSrc;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String gettel(String tel);
Edit1->Text=gettel(Edit1->Text);
}Top
6 楼F117p(走两步,你走两步?)回复于 2005-05-30 18:24:33 得分 0
改为:String __fastcall TForm::gettel(String tel)
尽量的与BCB接近,这样不容易出错Top
7 楼richson(雪山飞狐)回复于 2005-05-31 12:58:50 得分 0
gzTop




