Convertir int to string ou fonction tostring()

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

15 réponses

cptpingu Messages postés 3834 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 20 octobre 2021 125
8 avril 2011 à 15:49
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
3
cptpingu Messages postés 3834 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 20 octobre 2021 125
8 avril 2011 à 16:11
- É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
3
cptpingu Messages postés 3834 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 20 octobre 2021 125
8 avril 2011 à 10:42
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
0
kimode Messages postés 14 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 11 juin 2011
8 avril 2011 à 14:06
oui je veux concaténer deux chaines dynamique et mettre l'espace entre eux !!
la fonction retourne une chaine
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cptpingu Messages postés 3834 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 20 octobre 2021 125
8 avril 2011 à 14:10
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
0
kimode Messages postés 14 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 11 juin 2011
8 avril 2011 à 15:27
ah et sans std:: c'est possible ? une autre methode
0
cptpingu Messages postés 3834 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 20 octobre 2021 125
8 avril 2011 à 15:38
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
0
kimode Messages postés 14 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 11 juin 2011
8 avril 2011 à 15:39
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
0
cptpingu Messages postés 3834 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 20 octobre 2021 125
8 avril 2011 à 15:42
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
0
kimode Messages postés 14 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 11 juin 2011
8 avril 2011 à 15:46
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
0
kimode Messages postés 14 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 11 juin 2011
8 avril 2011 à 15:57
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;

}
0
kimode Messages postés 14 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 11 juin 2011
8 avril 2011 à 15:58
c la fonction tostring
0
kimode Messages postés 14 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 11 juin 2011
8 avril 2011 à 16:20
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
0
cptpingu Messages postés 3834 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 20 octobre 2021 125
8 avril 2011 à 16:25
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
0
kimode Messages postés 14 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 11 juin 2011
8 avril 2011 à 16:27
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
0