84 votes

C++ de la concaténation de chaînes

Je sais que c'est un problème commun, mais à la recherche de références et d'autres matériaux, je ne trouve pas de réponse claire à cette question de la mienne. Envisager d'avoir un tel code:

#include <string>

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

Bien compilateur me dit qu'il ne peut pas trouver un opérateur surchargé pour char[dim]. Bien, cela signifie que dans le string n'est pas un opérateur+??? mais dans plusieurs exemples, il y a une situation comme celle que je suis fournissant maintenant... eh Bien... Si ce n'est pas la bonne façon de la concaténation de plusieurs chaînes... qui est la meilleure pratique??

Merci

152voto

Konrad Rudolph Points 231505

Votre code, comme l'écrit, travaux. Vous êtes probablement en train de réaliser quelque chose sans rapport, mais similaire:

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

Cela ne fonctionne pas, parce que pour le C++ il semble que vous essayez d'ajouter deux char des pointeurs. Au lieu de cela, vous avez besoin de convertir au moins une de la char* littéraux à un std::string. Vous pouvez faire ce que vous avez déjà posté dans la question (comme je l'ai dit, ce code va fonctionner) ou vous effectuez les opérations suivantes:

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

46voto

Svisstack Points 9001
std::string a = "Hello ";
a += "World";

5voto

graham.reeds Points 9363

Je voudrais faire ceci:

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

Qui compile dans VS2008.

5voto

Teodor Pripoae Points 870
std::string a = "Hello ";
std::string b = "World ";
std::string c = a;
c.append(b);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X