我正在使用Borland C ++ Builder 6来尝试做一些简单的字符串连接。但是,我遇到了一个我认为有趣的问题。
我能在网上找到的所有内容都表明我应该能够做到这么简单的事情:
String word = "a" + "b" + "c";
但是,当我尝试编译此代码时,出现“无效指针添加”错误。我可以将每个部分分配给它自己的变量并将每个部分加在一起以获得所需的输出。但是,我认为这是不必要的,因为这是一个简单的例子。
我能够获得类似上述内容的唯一方法是通过这样做:
String a = "";
String word = a + "a" + "b" + "c";
我的问题是:为什么第二个例子工作得很好但不是第一个?
答案 0 :(得分:3)
原因是"a"
的类型是char*
(即:指向字符的指针),这意味着你写的时候
"a" + "b"
你试图将指针添加到一起,这是不允许的。
当您创建String
类型时,operator+
会重载,所以
String a = "";
a + "b"
将一个指向char的指针添加到String
,它有自己的连接定义。
答案 1 :(得分:0)
我不太确定,但这可能是因为争论。第一行中的“a”为char*
,因此添加其他字符串仍会产生char*
的结果,并且无法直接将其分配给String
对象。第二种情况表明,如果第一个参数是String
类型,则所有结果都是字符串,因此可以进行赋值。