如何使用 + 运算符在 cpp 中添加字符串和数字?

how adding string and numbers in cpp works using + operator?

我使用 cpp 已经有一段时间了,我知道我们不能添加字符串和数字(​​因为 + 运算符没有为此超载)。但是,我看到了这样的代码。

#include <iostream>
using namespace std;
int main() {
    string a = "";
    a += 97;
    cout << a;
}

这个输出 'a' 我也试过了。

string a ="";
a=a+97;

第二个代码给出了编译错误(作为 + 运算符的无效参数,std::stringint)。 我不想连接字符串和数字。 有什么区别?为什么一个有效而另一个无效?

我原以为 a+=97a=a+97 相同,但似乎有所不同。

第一个代码段有效,因为 std::string overrides operator+= 将字符附加到字符串。 97 是 'a' 的 ASCII 码,所以结果是 "a".

第二个代码段不起作用,因为没有定义接受 std::stringint+ 运算符,也没有生成 std::string 的转换构造函数来自 intcharThere two overloads of the + operator that take a char,但编译器无法判断使用哪一个。匹配不明确,报错