连接字符串不能按预期工作

时间:2010-11-29 14:25:51

标签: c++ operator-keyword string-concatenation stdstring standard-library

我知道这是一个常见的问题,但是在寻找参考资料和其他资料时,我找不到这个问题的明确答案。

请考虑以下代码:

#include <string>

// ...
// in a method
std::string a = "Hello ";
std::string b = "World";
std::string c = a + b;

编译器告诉我它找不到char[dim]的重载运算符。

这是否意味着字符串中没有+运算符?

但是在几个例子中有一个像这样的情况。如果这不是连接更多字符串的正确方法,那么最好的方法是什么?

4 个答案:

答案 0 :(得分:151)

您编写的代码可以正常运行。你可能想要实现一些不相关的东西,但是类似的东西:

std::string c = "hello" + "world";

这不起作用,因为对于C ++而言,这似乎是在尝试添加两个char指针。相反,您需要将至少一个char*文字转换为std::string。要么你可以做你已经在问题中发布的内容(正如我所说,这段代码工作),或者你做了以下事情:

std::string c = std::string("hello") + "world";

答案 1 :(得分:46)

std::string a = "Hello ";
a += "World";

答案 2 :(得分:5)

我会这样做:

std::string a("Hello ");
std::string b("World");
std::string c = a + b;

在VS2008中编译。

答案 3 :(得分:5)

std::string a = "Hello ";
std::string b = "World ";
std::string c = a;
c.append(b);