gpt4 book ai didi

c++ - 是什么使这个以 '+' 开头的字符串添加成为有效语句?

转载 作者:行者123 更新时间:2023-11-30 00:42:40 27 4
gpt4 key购买 nike

我的代码中有一个复制/粘贴错误,最后一行看起来像:myString = otherString; + “?” + 另一个字符串;

第一个分号后的代码没有发出任何错误或警告。使用online compiler为了仔细检查我的环境,我创建了这个同样可以编译和运行的快速示例:

int main()
{
std::string sText("Hello World");
std::string sMore(" again");

+ "???" + sText + sMore; //No warning, no error

cout << sText; //output "Hello World" as expected

+ 4; //Warning has no effect
+ sMore; //error: no match for ‘operator+’ (operand type is ‘std::string {aka std::basic_string}’)


return 0;
}

那么开始+做什么呢?

最佳答案

文字字符串(例如 "???")实际上是字符数组。与所有其他数组一样,它们会衰减为指向自身的指针。这就是这里发生的情况,表达式 + "???" 在指向字符串第一个元素的指针上应用一元 + 运算符。

这导致另一个指针(指向一个字符)等于第一个,然后可以用来添加到 std::string 对象。

同样的事情也发生在其他文字上,比如数字,这就是为什么 +4 也是有效的。

但是没有为 std::string 定义的一元 + 运算符,这就是为什么 +sMore 出现错误的原因。

关于c++ - 是什么使这个以 '+' 开头的字符串添加成为有效语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58735556/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com