gpt4 book ai didi

c++ - 字符串运算符+(重载)char数组和string.in cpp中的不同行为

转载 作者:行者123 更新时间:2023-12-01 14:51:35 31 4
gpt4 key购买 nike

我尝试使用字符串运算符合并2个数组。
以下情况可以正常工作,+运算符可以接受char *和string。

    string s = "";;
char a[5] = { 'f', 'i', 'r', 's', 't' };
char b[6] = { 's', 'e', 'c', 'o', 'n', 'd' };
s = a + string(b);
但是,当我传递char *和string时,这种情况无法正常工作。我很困惑为什么会这样?
    string s = "";;
char a[5] = { 'f', 'i', 'r', 's', 't' };
char b[6] = { 's', 'e', 'c', 'o', 'n', 'd' };
s = a + "{";
有人可以解释一下。

最佳答案

因为"{"不是std::string,而是const char[2](包括空终止符char),它可能会衰减为const char*。然后a + "{"只是无效的指针算术(加法)。
您需要将其中一个操作数更改为std::string才能调用 operator+ for std::string 。例如

a + std::string("{");
或使用 literals(自C++ 14起)。
a + "{"s;

关于c++ - 字符串运算符+(重载)char数组和string.in cpp中的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63325784/

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