C ++重载+运算符,以便始终连接各种字符串

时间:2010-12-06 12:24:03

标签: c++ string operator-overloading

每次你需要连接两个字符串时,至少需要这样做是非常无意义和麻烦的:

std::string mystr = std::string("Hello") + " World";

我想重载operator +并使用它以便总是以这种方式在char *之间进行连接:

std::string mystr = "Ciao " + "Mondo".
你会怎么做?我想找到一个最佳实践。谢谢......

助推器有什么能解决这个问题吗?

3 个答案:

答案 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