web-dev-qa-db-fra.com

La concaténation de chaînes ne fonctionne pas comme prévu

Je sais que c'est un problème courant, mais à la recherche de références et d'autres documents, je ne trouve pas de réponse claire à cette question.

Considérons le code suivant:

#include <string>

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

Le compilateur me dit qu'il ne peut pas trouver d'opérateur surchargé pour char[dim].

Cela signifie-t-il que dans la chaîne il n'y a pas d'opérateur +?

Mais dans plusieurs exemples, il existe une situation comme celle-ci. Si ce n'est pas le bon moyen de concaténer plus de chaînes, quel est le meilleur moyen?

83
Andry

Votre code, tel que rédigé, fonctionne. Vous essayez probablement de réaliser quelque chose de différent, mais similaire:

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

Cela ne fonctionne pas car pour C++, il semble que vous essayiez d’ajouter deux pointeurs char. Au lieu de cela, vous besoin de convertir au moins un des char* littéraux à un std::string. Soit vous pouvez faire ce que vous avez déjà posté dans la question (comme je l’ai dit, ce code sera travail) ou vous procédez comme suit:

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

Je voudrais faire ceci:

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

Qui compile dans VS2008.

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