关于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 *為好。