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

Nak*_*pal 3 c++ stdstring

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

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

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

string a ="";
a=a+97;
Run Code Online (Sandbox Code Playgroud)

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

我原以为a+=97是一样的,a=a+97但它似乎不同。

Fre*_*son 7

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

因为没有第二个片段不工作+,接受一个定义的操作符std::stringint,并没有转换构造做出std::string了一个intchar运算符的两个重载+采用 achar,但编译器无法分辨使用哪一个。匹配不明确,所以报错。

  • 不应该重载 [`operator+`](https://en.cppreference.com/w/cpp/string/basic_string/operator+) 中的 3 个将 `char` 作为第二个参数吗?但我想它不起作用,因为 `97` 是一个 `int` 而没有 `char`? (2认同)