Koenig 在他的《Accelerated C》一书中介绍了使用 ' ' 运算符连接字符串的概念文字和对象。虽然这看起来很简单,但存在一些微妙的细微差别,可能会导致意想不到的结果。
考虑以下两个例子:
<code class="cpp">const string hello = "Hello"; const string message = hello + ",world" + "!";</code>
<code class="cpp">const string exclam = "!"; const string message = "Hello" + ",world" + exclam;</code>
第一个示例成功连接了三个字符串。但是,第二个示例失败了。
要理解差异,我们必须考虑 ' ' 运算符的关联性。 ' ' 运算符是从左到右关联的,这意味着它从左到右进行计算。如果不考虑到这一点,这可能会导致意外的行为。
在第二个示例中,表达式可以用括号括起来:
<code class="cpp">const string message = ("Hello" + ",world") + exclam;</code>
如您所见,两个字符串文字“ Hello" 和 ",world," 首先连接起来。这会产生一个字符串文字,无法与字符串对象“exclam”进一步连接。
有多种方法可以解决此问题:
<code class="cpp">const string message = string("Hello") + ",world" + exclam;</code>
<code class="cpp">const string message = "Hello" + (",world" + exclam);</code>
“ ”运算符旨在连接字符串对象,而不是字符串文字。字符串文字是一个字符数组,当在表达式中使用时,它会转换为指向其初始元素的指针。在 C 中不允许添加两个指针,就像连接字符串文字一样。
虽然不能使用 ' ' 运算符连接字符串文字,但您可以通过并排放置它们来组合它们:
<code class="cpp">"Hello" ",world"</code>
这相当于:
<code class="cpp">"Hello,world"</code>
这对于将长字符串文字分解为多行很有用。
以上是如何使用 \' \' 运算符安全地连接字符串文字和对象?的详细内容。更多信息请关注PHP中文网其他相关文章!