为什么两个字符串相加结果不对?

shepher 2008-01-23 02:51:22
AnsiString s1,s2;

s1 = "aa";
s2 = "BB";

s1 = s1 + s2;

本来结果该是 aaBB
为什么结果是 aa

是少包含了什么头文件之类的吗?
我在同一个工程里的其它Form里面都能正常实现,在这个Form里就是不能实现
我把能实现的Form中include的东西都拷过来了,还是不能实现。。。。
...全文
185 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjfound 2008-01-25
  • 打赏
  • 举报
回复
AnsiString s1,s2,sTemp;

s1 = "aa";
s2 = "BB";

sTemp = s1 + s2;
s1 = sTemp;

这样应该没问题了
痞子酷 2008-01-24
  • 打赏
  • 举报
回复
呵呵
还是楼上高呀
僵哥 2008-01-23
  • 打赏
  • 举报
回复
	AnsiString s1,s2;
char a[5];
s1.SetLength(3);//使s1拥有3字节的内存
memset( s1.c_str(),0,3);//将s1所有字节"清零"
s2 = "a";//'a'='\x61'
s1=s1+s2; //将s1和s2进行连接,并赋给s1
ShowMessage(s1);//这里设置断点查看一下
ShowMessage(s1.Length());//这里设置断点查看一下
memset(a,0,5);//对a "清零"
memcpy(a,s1.c_str(),s1.Length());//将s1的内容复制给a
ShowMessage(*((int *)a));//建议这里可以设置一个断点,查看一下a各元素的内容
ShowMessage(0x61000000);
shepher 2008-01-23
  • 打赏
  • 举报
回复
s1 = s1 + s2执行之后的断点
CamelFang 2008-01-23
  • 打赏
  • 举报
回复
你是debug执行到s1=s1+s2,设断点看s1的值吗?
shepher 2008-01-23
  • 打赏
  • 举报
回复
那个是打错了。。。
我建了一个窗体变量iPort 将iInitPort赋给iPort,就好了
在转化赋值过程中都对了。。。

但是这个问题很奇怪,好像是赋值功能错误了样
ydlchina 2008-01-23
  • 打赏
  • 举报
回复
iTmp = iInitPort;
shepher 2008-01-23
  • 打赏
  • 举报
回复
没有啊,我都把所有的头文件都拷贝过来了
Ps:
在那个窗口里面
我引用了全局变量 iInitPort = 1
相应的头文件也包括了的
我定义一个int iTmp
令 iTmp = iinitPort;

但是iTmp结果是 0
ydlchina 2008-01-23
  • 打赏
  • 举报
回复
与一个新建的窗体比较,是否你无意删除或遮蔽了某个头文件
shepher 2008-01-23
  • 打赏
  • 举报
回复
问题就在这儿阿,我新建的窗口什么的都没有问题啊
就这个出问题了,怎么弄都不对,我都要晕了
难道是RP问题,我要去跳楼!!!
ydlchina 2008-01-23
  • 打赏
  • 举报
回复
//真不知楼主是如何测试的,测试没有你说的问题
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString s1,s2;

s1 = "aa";
s2 = "BB";

s1 = s1 + s2;
ShowMessage(s1);
}

13,826

社区成员

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

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