为什么字符串有 'operator+=',但没有 'operator+'?

19 浏览
0 Comments

为什么字符串有 'operator+=',但没有 'operator+'?

这个问题已经有答案了

运算符重载的基本规则和惯用法是什么?

为什么 std::string 定义了 operator+= 但没有定义 operator+?请看下面的代码示例 (http://ideone.com/OWQsJk)。

#include 
#include 
using namespace std;
int main() {  
    string first;
    first = "Day";
    first += "number";
    cout << "\nfirst = " << first << endl;
    string second;
    //second = "abc" + "def";       // This won't compile
    cout << "\nsecond = " << second << endl;
    return 0;
}

admin 更改状态以发布 2023年5月24日
0
0 Comments

那些不是std::string,而是const char *。尝试这个:

 second = std::string("abc") + "def";

0
0 Comments

你需要明确地将其中一个原始字符串字面量转换为 std::string。就像其他人已经提到的那样,你可以这样做:

second = std::string("abc") + "def";

或者使用 C++14,你可以使用

using namespace std::literals;
second = "abc"s + "def";
// note       ^

0