每次你需要连接两个字符串时,至少需要这样做是非常无意义和麻烦的:
std::string mystr = std::string("Hello") + " World";
我想重载operator +并使用它以便总是以这种方式在char *之间进行连接:
std::string mystr = "Ciao " + "Mondo".
你会怎么做?我想找到一个最佳实践。谢谢......
助推器有什么能解决这个问题吗?
答案 0 :(得分:5)
你不能让+
像这样工作。要定义运算符重载,至少有一个操作数必须是用户定义的类型。
但是,功能是内置的:如果你只是将两个字符串文字放在一起"like" "this"
,它们将在编译时自动连接在一起。
答案 1 :(得分:2)
你做不到。无法在内置类型之间重载运算符。
我也不确定为什么这么“麻烦”。如果你做了很多字符串操作,那么肯定一个或两个参数已经属于std::string
类型。
答案 2 :(得分:1)
你做不到。想一想 - 什么是“Ciao”和“Mondo”,真的吗?它们是静态的字符数组。您不能将静态数组一起添加,因为编译器将有助于指出以下代码:
#include <iostream>
int main()
{
std::string mystr = "Ciao " + "Mondo";
std::cout << mystr << std::endl;
return 0;
}
(输出:
In function 'int main()':
Line 5: error: invalid operands of types 'const char [6]' and 'const char [6]' to binary 'operator+'
就是这样。这几乎是一个骗局:const char* concatenation。