Borland的C ++生成器6和字符串连接(Borland C++ Builder 6 and s

2019-09-17 20:14发布

我使用Borland C ++ Builder的6试着做一些简单的字符串连接。 但是,我遇到了什么,我认为是一个有趣的问题。

一切我能在网上找到状态,我应该能够做这样简单的事情,因为这:

String word = "a" + "b" + "c";

然而,当我尝试编译这段代码,我得到一个“无效的指针相加”的错误。 我可以去尽可能每一部分分配给自己的变量,将每个部分的合力得到所需的输出。 但是,我认为这是不必要的给予多么简单的例子,这是的。

我已经能够获得类似上述的东西工作,因为所需的唯一途径就是通过这样做:

String a = "";
String word = a + "a" + "b" + "c";

我的问题是:为什么会在第二个例子中工作得很好,但不是第一位?

Answer 1:

其原因是类型"a"char* (即:指针到字符),这意味着当你写

"a" + "b"

您要添加到一起指针,这是不允许的。

当你创建一个String类型, operator+超载如此

String a = "";
a + "b"

增加了一个指针到字符的String ,它有自己的级联确定指标。



Answer 2:

我不太清楚,但是这可能是由于参数。 的“a”中的第一行是char* ,因此添加其它串仍使结果char* ,这是不可能直接将其指定OA String对象。 第二种情况下示出的是,如果第一个参数是String类型,所有的结果也字符串,所以分配是可能的。



文章来源: Borland C++ Builder 6 and string concatenation