首页 > 后端开发 > C++ > 正文

为什么使用字符串文字进行字符串连接失败?

Susan Sarandon
发布: 2024-10-24 08:32:30
原创
683 人浏览过

Why Did String Concatenation Using   Fail with String Literals?

将字符串文字与字符串连接

在 C 中,运算符可用于连接字符串和字符串文字。但是,此功能存在限制,可能会导致混乱。

在问题中,作者尝试连接字符串文字“Hello”、“,world”和“!”以两种不同的方式。第一个示例:

<code class="cpp">const string hello = "Hello";
const string message = hello + ",world" + "!";</code>
登录后复制

本例中,代码编译并运行成功。这是因为运算符的第一个操作数是字符串对象 (hello),因此编译器将其视为字符串和两个字符串文字的串联。

但是,第二个示例:

<code class="cpp">const string exclam = "!";
const string message = "Hello" + ",world" + exclam;</code>
登录后复制

编译失败。这是因为最左边的运算符试图连接两个字符串文字,这是不允许的。编译器将此代码解释为:

<code class="cpp">const string message = (("Hello" + ",world") + exclam);</code>
登录后复制

第一个串联尝试将两个指针(const char* 文字)添加在一起。

要解决此问题,代码应该:

  • 将前两个字符串之一连接为一个字符串对象:

    <code class="cpp">const string message = string("Hello") + ",world" + exclam;</code>
    登录后复制
  • 使用括号强制先计算第二个字符串:

    <code class="cpp">const string message = "Hello" + (",world" + exclam);</code>
    登录后复制

无法使用连接两个字符串文字的原因是因为字符串文字存储为字符数组,不能直接将其添加在一起。当您在大多数情况下使用字符串文字时,它会转换为指向其初始元素的指针,这对于运算符来说不是有效的操作数。

因此,请务必记住,只有最左边的两个操作数之一连接表达式中可以是字符串文字。然而,字符串文字可以通过将它们彼此相邻放置来连接,如下所示:

<code class="cpp">"Hello" ",world"
"Hello,world"</code>
登录后复制

以上是为什么使用字符串文字进行字符串连接失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!