string - Borland C++ Builder 6 和字符串连接

标签 string c++builder c++builder-6

我正在使用 Borland C++ Builder 6 尝试执行一些简单的字符串连接。然而,我遇到了一个我认为很有趣的问题。

我在网上找到的所有内容都表明我应该能够做这样简单的事情:

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

但是,当我尝试编译此代码时,出现“无效指针添加”错误。我可以将每个部分分配给它自己的变量,并将每个部分添加在一起以获得所需的输出。但是,考虑到这个示例非常简单,我认为这是不必要的。

我能够让与上面类似的东西按预期工作的唯一方法是这样做:

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

我的问题是:为什么第二个示例可以正常工作,而第一个示例却不能?

最佳答案

原因是"a"的类型是char*(即:指向char的指针),这意味着当你写

"a" + "b"

您正在尝试将指针添加到一起,这是不允许的。

当您创建String类型时,operator+会重载,因此

String a = "";
a + "b"

String 添加一个指向字符的指针,该字符串有自己的连接定义。

关于string - Borland C++ Builder 6 和字符串连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10917797/

相关文章:

c - 当我为它们分配不同的值时,为什么这两个字符串打印相同的值?

java - 将 Character[] 的范围转换为 String

C# 字符串以数字正则表达式开头

c++ - Builder 6 中的线程

c++ - 修复一些在 C++ 程序中扭曲字体的机器上的大系统字体?

c++ - 修改时是否复制 C++ 中的字符串?

delphi - 我的美国 Ini 文件可以与欧洲格式浮点一起使用吗

c++ - 在 RAD Studio 2010 中编译 yaml-cpp 时出错

delphi - 如果鼠标不在 VirtualTreeView (TVirtualStringTree) 上,如何禁用 MouseWheel

c++ - C++Builder 6 中的最大内存分配