CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

文字符串的问题

楼主defyctive(格风)2005-05-30 10:50:54 在 C++ Builder / 基础类 提问

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

相关问题

  • 字符串和文件
  • 在字符串中取英文引号间的字符串?
  • 对文件内的字符串检索
  • 中文字符串的截断问题?
  • 使用文件存取chang字符串
  • 不接受中文字符串吗?
  • 文件保存字符串数组
  • 怎样加密中文字符串?
  • 如何对中文字符串加密?
  • 将字符串写入文件?

关键词

  • 字符
  • bcb
  • psrc
  • 字符串
  • nsrclength
  • pdst
  • ndstlength
  • gettel
  • ansistring
  • edit1

得分解答快速导航

  • 帖主:defyctive
  • myy
  • F117p

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo