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

关于ansistring 的奇怪有关问题

2012-03-17 
关于ansistring 的奇怪问题 AnsiStringyy,tttt yy 12121 tt+yytt+ - 得出tt的值为12121-/

关于ansistring 的奇怪问题

AnsiString   yy,tt;
tt= " ";
yy= "12121 ";
tt+=yy;
tt+= "- ";

得出tt的值为12121-


///////////////////////////////////
AnsiString   yyy,tt;

yyy=sssss();//函数放回的值是ansistring   类型的,yyy=2006
                                               
tt= " ";
tt+=yyy;//tt=2006
tt+= "- ";//tt还是等于2006???不是2006-,这是为什么。

说明一下,第2段程序放在一个.h文件,最开始的时候我用   new   file   建立的,这样编译还通不过,把这个文件remove   from   poject就编译通过了,这个.h文件里的所有函数都工作正常,就是这个Ansistring   不知道问题出在哪里,
,在这个文件里用下面的都是成功的

time=FormatDateTime( "yyyy-mm-dd ",Now())+ "   "+temp;//没有问题,

[解决办法]
有些时候AnsiString变量里面有不可见字符(比如0x00),调试的时候只能看见不可见字符前面的字符,你加上去的时候还是看不见,其实已经加上去了
[解决办法]
AnsiString s1 = "20060508 " ;
s1[5] = 0 ;
AnsiString t1 = s1 ;
t1 = t1+ "_ "; //改成 t1 += "- "; 是一樣的。
ShowMessage(t1); //顯示 2006 .//此時:t1 = "2006?508- "(? == 0x00)
for(int i = 1 ; i <= t1.Length(); ++i)
if(t1[i] == 0 )
t1[i] = '? ' ;
ShowMessage(t1); //顯示 2006?508-

看一下上面這段代碼,就知道怎麼回事了。

問題不在於 += 操作符,而在於字符串中有 0x0 ,返回值為AnsiString則中間不應為0,否則返回一個char *為好。

热点排行