在他的《Accelerated C》一书中,Koenig 介绍了使用 ' ' 运算符连接字符串的概念文字和对象。虽然这看起来很简单,但存在一些微妙的细微差别,可能会导致意想不到的结果。
考虑以下两个例子:
const string hello = "Hello";
const string message = hello ",world" "!";
const string exclam = "!";
const string message = "Hello" ",world" exclam;
第一个示例成功连接了三个字符串。然而,第二个示例失败了。
要理解差异,我们必须考虑“ ”运算符的关联性。 ' ' 运算符是从左到右关联的,这意味着它从左到右进行计算。如果不考虑的话,这可能会导致意外的行为。
在第二个示例中,表达式可以用括号括起来:
const string message = ("Hello" ",world") exclam;
如您所见,两个字符串文字“Hello”和“,world”首先连接在一起。这会产生一个字符串文字,无法与字符串对象“exclam”进一步连接。
有多种方法可以解决此问题:
const string message = string("Hello") ",world" exclam;
const string message = "Hello" (",world" exclam);
“ ”运算符旨在连接字符串对象,而不是字符串文字。字符串文字是一个字符数组,当在表达式中使用时,它会转换为指向其初始元素的指针。在 C 中不允许添加两个指针,就像连接字符串文字一样。
虽然不能使用 ' ' 运算符连接字符串文字,但您可以通过并排放置它们来组合它们:
"Hello" ",world"
这相当于:
"Hello,world"
这对于将长字符串文字分解为多行很有用。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3