连接字符串文字与字符串
在 C 中,运算符可用于连接字符串和字符串文字。但是,此功能存在限制,可能会导致混乱。
在问题中,作者尝试连接字符串文字“Hello”、“,world”和“!”以两种不同的方式。第一个例子:
const string hello = "Hello";
const string message = hello ",world" "!";
此时,代码编译运行成功。这是因为运算符的第一个操作数是字符串对象 (hello),因此编译器将其视为字符串和两个字符串文字的串联。
但是,第二个示例:
const string exclam = "!";
const string message = "Hello" ",world" exclam;
编译失败。这是因为最左边的运算符试图连接两个字符串文字,这是不允许的。编译器将此代码解释为:
const string message = (("Hello" ",world") exclam);
第一个串联尝试添加两个指针 ( const char* 文字)在一起。
要解决此问题,代码应该:
将前两个字符串之一连接为字符串对象:
const string message = string("Hello") ",world" exclam;
使用括号强制先计算第二个:
const string message = "Hello" (",world" exclam);
不能使用连接两个字符串文字的原因是因为字符串文字存储为字符数组,不能直接相加。当您在大多数上下文中使用字符串文字时,它会转换为指向其初始元素的指针,这对于运算符来说不是有效的操作数。
因此,请务必记住,只有最左边的两个操作数之一连接表达式中可以是字符串文字。然而,字符串文字可以通过将它们彼此相邻放置来连接,如:
"Hello" ",world"
"Hello,world"
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3