84

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

考虑以下代码:

#include <string>

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

编译器告诉我它找不到char[dim].

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

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

4

4 回答 4

154

您编写的代码可以正常工作。您可能正在尝试实现一些不相关但类似的东西:

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

这不起作用,因为对于 C++,这似乎是您试图添加两个char指针。相反,您需要将至少一个char*文字转换为std::string. 您可以执行已在问题中发布的内容(正如我所说,此代码起作用),或者您执行以下操作:

std::string c = std::string("hello") + "world";
于 2010-11-29T14:29:21.113 回答
46
std::string a = "Hello ";
a += "World";
于 2010-11-29T14:28:27.293 回答
5

我会这样做:

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

在 VS2008 中编译。

于 2010-11-29T14:28:46.343 回答
5
std::string a = "Hello ";
std::string b = "World ";
std::string c = a;
c.append(b);
于 2010-11-29T14:29:01.557 回答