【发布时间】:2021-08-02 13:58:39
【问题描述】:
我使用 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 相同,但它似乎有所不同。
【问题讨论】:
-
第一个
string显然不是std::string。您没有提供足够的信息,所以只能猜测。我怀疑它是某个指针类型的typedef(例如const char *),所以a += 97进行指针运算。它也可能是一个与typedef具有相似效果(但有其他陷阱)的宏。 -
@Peter:“第一个字符串显然不是 std::string”——嗯?你是怎么得出这个结论的?
-
@Peter 可以是
std::string: godbolt.org/z/TnbsjcfE6 -
“我不想连接字符串和数字”你想要什么?