我知道这是一个常见的问题,但是在寻找参考资料和其他资料时,我找不到这个问题的明确答案。
请考虑以下代码:
#include <string>
// ...
// in a method
std::string a = "Hello ";
std::string b = "World";
std::string c = a + b;
编译器告诉我它找不到char[dim]
的重载运算符。
这是否意味着字符串中没有+运算符?
但是在几个例子中有一个像这样的情况。如果这不是连接更多字符串的正确方法,那么最好的方法是什么?
答案 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);