如何使用 + 运算符在 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::string
和 int
)。
我不想连接字符串和数字。
有什么区别?为什么一个有效而另一个无效?
我原以为 a+=97
与 a=a+97
相同,但似乎有所不同。
第一个代码段有效,因为 std::string
overrides operator+=
将字符附加到字符串。 97 是 'a'
的 ASCII 码,所以结果是 "a"
.
第二个代码段不起作用,因为没有定义接受 std::string
和 int
的 +
运算符,也没有生成 std::string
的转换构造函数来自 int
或 char
。 There two overloads of the +
operator that take a char
,但编译器无法判断使用哪一个。匹配不明确,报错
我使用 cpp 已经有一段时间了,我知道我们不能添加字符串和数字(因为 + 运算符没有为此超载)。但是,我看到了这样的代码。
#include <iostream>
using namespace std;
int main() {
string a = "";
a += 97;
cout << a;
}
这个输出 'a' 我也试过了。
string a ="";
a=a+97;
第二个代码给出了编译错误(作为 + 运算符的无效参数,std::string
和 int
)。
我不想连接字符串和数字。
有什么区别?为什么一个有效而另一个无效?
我原以为 a+=97
与 a=a+97
相同,但似乎有所不同。
第一个代码段有效,因为 std::string
overrides operator+=
将字符附加到字符串。 97 是 'a'
的 ASCII 码,所以结果是 "a"
.
第二个代码段不起作用,因为没有定义接受 std::string
和 int
的 +
运算符,也没有生成 std::string
的转换构造函数来自 int
或 char
。 There two overloads of the +
operator that take a char
,但编译器无法判断使用哪一个。匹配不明确,报错