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

Signaler
Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
11 juin 2011
-
Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
11 juin 2011
-
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 .
A voir également:

15 réponses

Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
121
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
Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
121
- É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
Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
121
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
Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
11 juin 2011

oui je veux concaténer deux chaines dynamique et mettre l'espace entre eux !!
la fonction retourne une chaine
Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
121
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
Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
11 juin 2011

ah et sans std:: c'est possible ? une autre methode
Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
121
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
Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
11 juin 2011

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
Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
121
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
Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
11 juin 2011

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
Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
11 juin 2011

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;

}
Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
11 juin 2011

c la fonction tostring
Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
11 juin 2011

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
Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
121
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
Messages postés
14
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
11 juin 2011

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