web-dev-qa-db-ja.com

文字列の連結が期待どおりに機能しない

私はそれが一般的な問題であることを知っていますが、参考文献や他の資料を探しても、この質問に対する明確な答えは見つかりません。

次のコードを検討してください。

#include <string>

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

コンパイラは、char[dim]のオーバーロード演算子を見つけることができないと言っています。

文字列に+演算子がないことを意味しますか?

しかし、いくつかの例では、このような状況があります。これがより多くの文字列を連結する正しい方法ではない場合、最良の方法は何ですか?

83
Andry

コードは、書かれているとおりに機能します。あなたはおそらく、関係のない何かを達成しようとしていますが、似ています:

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

C++では、2つのcharポインターを追加しようとしているように見えるため、これは機能しません。代わりに、必要少なくとも1つのchar*リテラルをstd::stringに変換します。質問に既に投稿したことを実行できます(私が言ったように、このコードwill work)、または次の操作を実行します。

std::string c = std::string("hello") + "world";
151
Konrad Rudolph
std::string a = "Hello ";
a += "World";
46
Svisstack

私はこれをします:

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

VS2008でコンパイルします。

5
graham.reeds
std::string a = "Hello ";
std::string b = "World ";
std::string c = a;
c.append(b);
5
Teodor Pripoae