AnsiString让你欢喜,让你忧~~~~~~~~~~

dreamnyj 2002-05-11 03:43:08

1、AnsiString类的+=运算符重载不要使用,因为会造成一些时候的结果不一致.
2、AnsiString类的c_str()方法,返回的值的地址不要保存,因为程序中再次对那个串进行赋值操作的时候,类会释放原来的'串'占用的空间,再重新分配新的空间,会导致你的指针指向非法的地址.
3、AnsiString类,下标运行符的重载是从1开始的,而不是象我们常用的字符数组从0开始.

4、我的一点疑问:

新建工程中使用以下代码,
AnsiString AnsiTmp ("1");
AnsiString AnsiTmp2("1");
AnsiString StringAddResult;

AnsiTmp2=StringAddResult;
StringAddResult=AnsiTmp2;

AnsiTmp2=AnsiTmp+AnsiTmp2;
StringAddResult=AnsiTmp2;
编译器不会错。

但我的程序中对StringAddResult进行了一系列的操作以后,从调试的结果看串值是正常的。
但却无法完成上面语句中
AnsiTmp2=AnsiTmp+AnsiTmp2;的操作,
只要把StringAddResult的值赋给其它的AnsiString类,如AnsiTmp2或是AnsiTmp就无法完成上面的语句。

异常处理信息为:

Project Counter.exe raised exception class EaccessViolation with message 'Access violation at address 40003005 in module 'VCL50.BPL'.Read of address 0109FFFC', Process stopped. Use Step or Run to Continue.

那位知道我的错误之处,万望指点。
...全文
78 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
niyashi 2002-05-21
  • 打赏
  • 举报
回复
有时好象的确是有问题的,希望你在使用AnsiString类的时候一定要小心并且规整。

其实用C++的类实现一个delphi的类型来说,速度何止是降低了几十倍。唉。
我不懂电脑 2002-05-11
  • 打赏
  • 举报
回复
to xiaohan13916830(潇寒)
同喜呀
xiaohan13916830 2002-05-11
  • 打赏
  • 举报
回复
呵呵,孤独大侠,加星了!恭喜恭喜!^_^
当升成五星时,可要请客啊!^_^
blankman 2002-05-11
  • 打赏
  • 举报
回复
没问题
我不懂电脑 2002-05-11
  • 打赏
  • 举报
回复
我试了没问题

13,826

社区成员

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

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