Convertir int to string ou fonction tostring() [Résolu]

Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
11 juin 2011
- - Dernière réponse : kimode
Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
11 juin 2011
- 8 avril 2011 à 16:27
svp j'ai besoin d'aide je suis bloqué pr la fonction tostring ou comment converatir et concaténer deux chaines dynamiques + les espaces et merci .
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
Messages postés
3831
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
30 janvier 2019
162
3
Merci
Fais voir ton code.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 118 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cptpingu
Messages postés
3831
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
30 janvier 2019
162
3
Merci
- Évite les "using namespace", voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
- N'utilise pas NULL, mais 0 en C++, voir: http://0217021.free.fr/portfolio/axel.berardino/articles/null-en-cpp
- Avant un delete, inutile de vérifier que la variable est nulle, car "delete 0" ne fait rien.

Petit exemple fonctionnel:
#include 
#include <cstring>

int main()
{
  char s1[32] = "Hello";
  char s2[32] = "world";
  char* tmp = 0;
  const char* space = " ";
  const int size = strlen(s1) + 1 + strlen(s2) + 1; // s1 + ' ' + s2 + \0

  tmp = new char[size];
  strcpy(tmp, s1);
  strcat(tmp, space);
  strcat(tmp, s2);

  std::cout << "size = " << size << std::endl
    << "s1 = "" << s1 << """ << std::endl
    << "s2 = "" << s2 << """ << std::endl
    << "tmp = "" << tmp << """ << std::endl;

  delete[] tmp;

  return 0;
}


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 118 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cptpingu
Messages postés
3831
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
30 janvier 2019
162
0
Merci
Tu peux poser ta question de manière compréhensible ?

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Commenter la réponse de cptpingu
Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
11 juin 2011
0
Merci
oui je veux concaténer deux chaines dynamique et mettre l'espace entre eux !!
la fonction retourne une chaine
Commenter la réponse de kimode
Messages postés
3831
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
30 janvier 2019
162
0
Merci
En C++ (puisque tu as posté dans la rubrique C++):

std::string a = "Une chaine";
std::string b = "Une chaine";
std::string c = a + " " + b;
std::cout << c << std::endl;



________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Commenter la réponse de cptpingu
Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
11 juin 2011
0
Merci
ah et sans std:: c'est possible ? une autre methode
Commenter la réponse de kimode
Messages postés
3831
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
30 janvier 2019
162
0
Merci
Si tu fais du C++, c'est la meilleur méthode.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Commenter la réponse de cptpingu
Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
11 juin 2011
0
Merci
oui oui mais le problème qu'on est pas encore arrivée à ce chapitre on a commencé le poo les constructeurs destructeur si tu vx passe moi ton email si sa te derange pas
et mercii
Commenter la réponse de kimode
Messages postés
3831
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
30 janvier 2019
162
0
Merci
Pas de mail, jamais. Si tu as une question, c'est ici qu'on la traite.
Ok, c'est donc une contrainte scolaire. C'est important que tu précises bien tout. Sinon c'est impossible de t'aider correctement.

Si tu es limité au char*, alors regarde du côté de:
- strcpy
- strcat
- malloc
- free

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Commenter la réponse de cptpingu
Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
11 juin 2011
0
Merci
oui j'ai fait avec strcat ça marche mais sans les espaces et le problème c'est qu'on je concatène 3 chaines tous vas bien sinon qd je concatène 4 il y a un problème de destructeur !!ça beug mais pas d'erreur de compilation
Commenter la réponse de kimode
Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
11 juin 2011
0
Merci
merci d'accord . c'est la première fois que je suis dans le forum et merci
#include "stdafx.h"

Ouvrage::Ouvrage()
{

this->code=0;
this->auteurs=new char[1];
auteurs[0]=0;
this->dateEdition=new char[1];
dateEdition[0]=0;
this->titre= new char [1];
titre[0]=0;

}
Ouvrage::Ouvrage(int code,char *titre,char *auteurs,char*dateEdition)
{
this->code=code;
this->titre=new char[strlen(titre)+1];
strcpy(this->titre,titre);
this->auteurs=new char[strlen(auteurs)+1];
strcpy(this->auteurs,auteurs);
this->dateEdition=new char[strlen(dateEdition)+1];
strcpy(this->dateEdition,dateEdition);

}
Ouvrage::Ouvrage(Ouvrage &o)
{
this->code=o.code;
this->titre=new char[strlen(o.titre)+1];
strcpy(this->titre,o.titre);
this->auteurs=new char[strlen(o.auteurs)+1];
strcpy(this->auteurs,o.auteurs);
this->dateEdition=new char[strlen(o.dateEdition)+1];
strcpy(this->dateEdition,o.dateEdition);

}



Ouvrage::~Ouvrage()
{
if (this->auteurs!=NULL) delete [] auteurs;
if (this->titre!=NULL) delete [] titre;
if (this->dateEdition!=NULL) delete [] dateEdition;

}


void Ouvrage::print()
{
cout<<"code:"<<code<<endl;
cout<<"titre:"<<titre<<endl;
cout<<"date edtion:"<<dateEdition<<endl;
cout<<"auteurs:"<titre= new char[strlen(tmp)+1];
strcpy(this->titre,tmp);
s=cp;
}
if(v==2)
{
tmp=left(info,s+1,cp);
this->auteurs= new char[strlen(tmp)+1];
strcpy(this->auteurs,tmp);
s=cp;
}
if(v==3)
{
tmp=left(info,s+1,cp);
this->dateEdition= new char[strlen(tmp)+1];
strcpy(this->dateEdition,tmp);
s=cp;
}

v++;
cp++;

}



}


char* Ouvrage::left(char* info,int start,int target)
{
char *tmp= new char[target-start];

for(int i=start;i<target;i++) tmp[i-start]=info[i];
tmp[target-start]=0;
return tmp;
}
int Ouvrage:: getCode()
{
return code;
}
char * Ouvrage::getTitre()
{
return titre;
}
char * Ouvrage::getAuteurs()
{
return auteurs;
}
char *Ouvrage::getDateEdition()
{
return dateEdition;
}

void Ouvrage::setCode(int code)
{
this->code=code;

}


void Ouvrage::setTitre(char *titre)
{

this->titre=new char[strlen(titre)+1];
strcpy(this->titre,titre);
}

void Ouvrage::Set(Ouvrage o)
{
this->code=o.code;
this->titre=new char[strlen(o.titre)+1];
strcpy(this->titre,o.titre);
this->auteurs=new char[strlen(o.auteurs)+1];
strcpy(this->auteurs,o.auteurs);
this->dateEdition=new char[strlen(o.dateEdition)+1];
strcpy(this->dateEdition,o.dateEdition);

}

char * Ouvrage::tostring()
{	char *tmp;
tmp=new char[10];
int a=10;
itoa(code,tmp,a);
//char *s=new char [strlen(tmp)+strlen(titre)+strlen(auteurs)+strlen(dateEdition)+1];
char *s1=new char [strlen(tmp)+strlen(titre)+1];
//char *s2=new char [strlen(tmp)+strlen(titre)+strlen(auteurs)+1];
char *s3=new char [strlen(tmp)+strlen(titre)+strlen(auteurs)+strlen(dateEdition)+1];
//strcpy(s,tmp && titre && auteurs && dateEdition);
//	char *titre=new char[strlen(titre)+2];
//titre[strlen(titre)+1]=" ";
//titre[strlen(titre)+2]=0;
//tmp[strlen(tmp)+2]=" ";
s1[0]=0;
s3[0]=0;
s3=strcat(tmp,titre);
//s3[strlen(tmp)+strlen(titre)+1]=0;
s3=strcat(s3,auteurs);
//s3=strcat(s3,dateEdition);
s3[30]=0;
cout<<strlen(s3)<<endl;
cout<<s3<<endl;
cout<<s1<<endl;
//cout<<s2<<endl;
//cout<<strlen(tmp);
//strcpy(s,s3);
return s3;

}

int Ouvrage::FindT(char *titre)
{
if(strcpy(this->titre,titre)==0){ cout<<"trouver"<<endl;return 1;}
else return 0;

}
Commenter la réponse de kimode
Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
11 juin 2011
0
Merci
c la fonction tostring
Commenter la réponse de kimode
Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
11 juin 2011
0
Merci
mais moi je dois retourner : le code + le titre + date edition + auteurs dans une seule chaine
c'est la fonction tostring
ps: et merci pour l'explication c'est vraiment utile mercii
Commenter la réponse de kimode
Messages postés
3831
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
30 janvier 2019
162
0
Merci
mais moi je dois retourner : le code + le titre + date edition + auteurs dans une seule chaine

Tu regardes mon exemple et tu l'adaptes, tu as tout ce dont tu as besoin pour le faire. C'est le même principe pour 2, 3, 4 ou 50 chaînes.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Commenter la réponse de cptpingu
Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
11 juin 2011
0
Merci
oui ouii mais pour moi pour 3 chaine ce n'est pas un bleme quand j'ajoute le 4ème ça plante c'est un bleme de destructeur je pense
Commenter la réponse de kimode

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.