私はそれが一般的な問題であることを知っていますが、参考文献や他の資料を探しても、この質問に対する明確な答えは見つかりません。
次のコードを検討してください。
#include <string>
// ...
// in a method
std::string a = "Hello ";
std::string b = "World";
std::string c = a + b;
コンパイラは、char[dim]
のオーバーロード演算子を見つけることができないと言っています。
文字列に+演算子がないことを意味しますか?
しかし、いくつかの例では、このような状況があります。これがより多くの文字列を連結する正しい方法ではない場合、最良の方法は何ですか?
コードは、書かれているとおりに機能します。あなたはおそらく、関係のない何かを達成しようとしていますが、似ています:
std::string c = "hello" + "world";
C++では、2つのchar
ポインターを追加しようとしているように見えるため、これは機能しません。代わりに、必要少なくとも1つのchar*
リテラルをstd::string
に変換します。質問に既に投稿したことを実行できます(私が言ったように、このコードwill work)、または次の操作を実行します。
std::string c = std::string("hello") + "world";
std::string a = "Hello ";
a += "World";
私はこれをします:
std::string a("Hello ");
std::string b("World");
std::string c = a + b;
VS2008でコンパイルします。
std::string a = "Hello ";
std::string b = "World ";
std::string c = a;
c.append(b);