begin process at 2012 05 30 00:43:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Operateur + (string)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Operateur + (string)

mardi 22 septembre 2009 à 21:11:13 | Operateur + (string)

victorcoasne

Membre Club


Bonjour,

Je voulais faire un code du genre :

Code C/C++ :
#include <iostream>

#include <string>
using namespace std;

int main()
{
string test = "a" + "b";
cout << test << endl;
return 0;
}


Mais il ne voulait pas compiler à cause de l'erreur :
Code :
invalid operands of types `const char[2]' and `const char[2]' to binary `operator+'


J'ai donc décider de redéfinir l'opération d'addition de la sorte :
Code C/C++ :
string operator+(char* chaine1, char* chaine2)

{
string nouvelleChaine = chaine1;
nouvelleChaine += chaine2;
return nouvelleChaine;
}


Mais il ne compile pas et génère une autre erreur :
Code :
`std::string operator+(char*, char*)' must have an argument of class or enumerated type


Avez-vous des suggestions à part ne pas faire "a" + "b" ?
S'il faut réimplémenter la classe string ou en modifier l'en-tête ça ne me gène pas du moment que ça fonctionne.

Merci d'avance et bonne prog,
@++,

Victor

mercredi 23 septembre 2009 à 08:59:19 | Re : Operateur + (string)

fregolo52

Membre Club

Moi aussi, je suis largué, j'ai repris du code, il y a :

Code C/C++ :
string test = "a" + "b";


ca compile, j'ai tenté pareil ca m'a fait une erreur : "cannot add two pointers"

J'ai fini par faire :
Code C/C++ :
std::string test("a");

test += "b";

mercredi 23 septembre 2009 à 13:01:29 | Re : Operateur + (string)

CptPingu

Administrateur CodeS-SourceS

C'est normal.

Ca devrait fonctionner comme ceci:

Code C/C++ :
std::string test = std:string("a") + std::string("b");


ou encore comme cela:

Code C/C++ :
std::stringstream ss;

ss << "a" << "b";
std:string test = ss.str();


`std::string operator+(char*, char*)' must have an argument of class or enumerated type



Ici, le message est clair, il veut au moins une classe dans ses arguments, et non uniquements des types primitifs.

As-tu essayer de redéfinir l'operateur : "operator+=(const std::string& s1, char* s2);" ?

mercredi 23 septembre 2009 à 16:03:42 | Re : Operateur + (string)

victorcoasne

Membre Club

Bonjour,

Si j'ai bien compris il est et sera toujours impossible de faire un

Code C/C++ :
string test = "a" + "b";

parce que ce sont des types primitifs et qu'on ne peut pas redéfinir un opérateur même en portée global pour un type primitif ?

Merci et bonne prog,
@++

Victor

mercredi 23 septembre 2009 à 16:08:34 | Re : Operateur + (string)

CptPingu

Administrateur CodeS-SourceS
Réponse acceptée !

Tu peux redéfinir un comportement pour une interaction type personnalisé + type primitif, mais pas type primitif + type primitif.

C'est une question de logique. Que se passerait-t-il si tu essayait de redéfinir l'opérateur + entre deux entiers ? ;)

mercredi 23 septembre 2009 à 20:52:00 | Re : Operateur + (string)

victorcoasne

Membre Club

Bonjour,

Tu pourrais par exemple faire une classe de gestion des nombres entier et retourner directement son résultat avec le type de ta classe.

Merci et bonne prog,
@++

Victor



Cette discussion est classée dans : code, string, char, operator, nouvellechaine


Répondre à ce message

Sujets en rapport avec ce message

problème d'allocation mémoire dans ma classe [ par Bub325 ] Salut, j'ai un problème dans le code suivant au niveau de l'allocation mémoire de tmp.a = new char... dans operator+, et je ne sait pas du tout pourqu String to Char puis Char to Int puis Int to Char puis Char to Int [ par gooooo ] Bonjour, Je débute avec Visual C++ et j'avoue que j'ai un peu de mal. Habituellement j'utilise Qt et la il y a du changement. Voici le problème : J Problème pour stoker une string dans un char* [ par Faroww ] Salut, Alors voici mon problème j'utilise une OpenFileDialog (Parcourir)pour permette a l'utilisateur de choisir un fichier. Je récupéré le patch du Chaine de caractères oubliée [ par Venusos ] Hello les gens =) Ma prof de dev m'ayant donné comme devoir de grosbill pour les vacances (ouais parce-qu'elle veut quand-même un peu me tester vu qu Erreurs C2065 et C2143 [ par thomas71 ] Bonjour, J'ai un petit problème avec le bout de code ci-dessous. Je travaille sous Visual Studio 2010. Deux erreur apparaissent lors de la compilatio calculatrice matricielle avec boost::shared_array [ par mosaidrd ] le code ne genere aucune ereur mais il rencotre un problem d'assertion merci pour votre aide voici mon code : [code=cpp] //fichier Matrix.h #ifndef M prog. FindFirstFile plante [ par jejefull1234 ] Bonjour, J'ai réaliser un programme qui affiche la date de création d'un fichier .txt Le problème c'est que mon code fonctionne en debug mais plante e Borland recevoir des données via un port serie [ par limdizrad ] Bonjour, Je n'arrive pas à recevoir des données via le module tvacomm de Borland c++ builder, voici le code que j'ai tapé, pouvez me dire ce qui cloc Evaluation d'une expression char* ou string [ par tsonamir ] Je suis appelé à faire un tableur dont chaque cellule contient une formule de type string ou char*,où les seuls opérateurs trouvés sont + - * / ( ) [ Convert char** en int sous c [ par clavz40 ] Bonjour a tous, Je développe une petite application en c pour appareil de lecture de code barre dont je récupère les infos. J'avais besoin d'une fon


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,402 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales