I know it is a common issue, but looking for references and other material I don't find a clear answer to this question.
Consider the following code:
#include <string>
// ...
// in a method
std::string a = "Hello ";
std::string b = "World";
std::string c = a + b;
The compiler tells me it cannot find an overloaded operator for char[dim]
.
Does it mean that in the string there is not a + operator?
But in several examples there is a situation like this one. If this is not the correct way to concat more strings, what is the best way?
Your code, as written, works. You’re probably trying to achieve something unrelated, but similar:
std::string c = "hello" + "world";
This doesn’t work because for C++ this seems like you’re trying to add two char
pointers. Instead, you need to convert at least one of the char*
literals to a std::string
. Either you can do what you’ve already posted in the question (as I said, this code will work) or you do the following:
std::string c = std::string("hello") + "world";
std::string a = "Hello ";
a += "World";
I would do this:
std::string a("Hello ");
std::string b("World");
std::string c = a + b;
Which compiles in VS2008.
std::string a = "Hello ";
std::string b = "World ";
std::string c = a;
c.append(b);
来源:https://stackoverflow.com/questions/4304662/concatenating-strings-doesnt-work-as-expected