Convertir un int en char ou en string

mimyne Messages postés 20 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 4 mars 2003 - 24 févr. 2003 à 11:39
cs_jeep05 Messages postés 24 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 24 juillet 2005 - 24 juil. 2005 à 01:11
Bonjour je voudrai savoir comment on peut faire en c++ pour convertir un int en char ou bien en string la fonction itoa ne marche pas
merci

11 réponses

cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
24 févr. 2003 à 12:04
bonjour,
la fonction itoa fonctionne correctement, mais est un peu trop orientée 'C'
voici ce que je te propose, l'utilisation du "stringstream"
a toi d'y mettre les types que tu désire (ici un int et un float)

#include <sstream>
#include
int main()
{
using namespace std;
string s = "chaine";
int i=0;
float f = 2.01F;
stringstream buffer;
buffer << s << " " << i << " " << f ;
//conversion nécessaire pour affichage
cout << buffer.str() << endl;
return 0;
}
0
cs_Nila Messages postés 2 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 24 février 2003
24 févr. 2003 à 12:09
Bonjour,

Pour transformer un int en char a la main :
Décomposer le nb en milliers , centaines , dizaines ...
Connaitre la valeur de 0 et de 9 ( en ascii 48 et 57)
Allouer la mémoire pour la chaine
et grace a la valeur ascii on peut remplire la chaine
(48 + nbaconvertir)

voilà

au revoir

May the force be with you 8-)
0
mimyne Messages postés 20 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 4 mars 2003
24 févr. 2003 à 12:16
je n'arrive pas avec la solution que tu m'as donné. Par contre je peux peut être expliquer mieux ce que je souhaite faire.
en fait g un text box je recupère la valeurs qu'il y a dedans pus je l'additionne ensuite je veux faire apparaitre le resultat dedans mais il me faut convertir mon type int en string ou en char.
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
24 févr. 2003 à 13:14
re,
peut être te contenterais tu du bon vieux sprintf de <stdio.h>

//utilisation de sprintf
int i=1234;int j=11111;
char buf[10];//récepteur assez large
sprintf(buf, "%d", (i+j));//et buf contient le texte
printf("%s\n",buf);

0

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

Posez votre question
mimyne Messages postés 20 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 4 mars 2003
24 févr. 2003 à 17:12
g encore un souci lorsque je genere ma solution je n'ai pas d'erreur par contre lorsque j'execute le programme et que je clique sur le bouton qui genere le code, g ce message qui apparait:
Debug Assertion Failed
File sprintf.c
Expression: string!=NULL
For information on how your program can cause an assertion failure, see the visual C++ document on asserts.
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
24 févr. 2003 à 17:18
un comportement différent en Debug et en Release !
Peut être une variable non initialisée
Donne nous un peu de ton
code
0
mimyne Messages postés 20 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 4 mars 2003
24 févr. 2003 à 17:23
tu veux tous le code?
0
mimyne Messages postés 20 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 4 mars 2003
24 févr. 2003 à 17:28
g coupé certaine partie par [...] etant les meme

// Il s'agit du fichier projet principal pour le projet d'application VC++
// généré en utilisant un Assistant Application.

#include "stdafx.h"
#include <stdio.h>
#include
#include <sstream>
#include <stdlib.h>
#using <mscorlib.dll>
#using <System.dll>
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>

#include <tchar.h>
using namespace std;
using namespace System;
using namespace System::ComponentModel;
using namespace System::Windows::Forms;
using namespace System::Drawing;
using namespace System::Drawing::Text;

__gc public class CalForm:public Form
{
private:
Button* Btn1;
Button* Btn2;
Button* Btn3;
Button* Btn4;
Button* Btn5;
Button* Btn6;
Button* Btn7;
Button* Btn8;
Button* Btn9;
Button* Btn0;
Button* Btnp;
Button* Btnm;
Button* Btnmult;
Button* Btneg;
Button* BtnOn;
TextBox*text1;
int a;
int b;
int res;
char* var;

public:
CalForm()
{
// Titre de l'application

Text= S"Calculatrice";
Size = System::Drawing::Size(450,300);
BackColor = Color::PowderBlue;

//Fixe les bords
FormBorderStyle = FormBorderStyle::Sizable;

// Insere le bouton 1
Setup_Button1();

//Bouton 2
Setup_Button2();
//Bouton 3
Setup_Button3();
[...]

///Boutton +
Setup_Buttonp();
//Bouton -
Setup_Buttonm();
//Bouton *
Setup_Buttonmult();
//Bouton On
Setup_ButtonOn();
//Affichage du resultat
Setup_Text();
//Egale
Setup_Buttoneg();
}
private:
void Setup_Button1()
{
Btn1=new Button();
Btn1->Text= S"1";
Btn1->Font=new System::Drawing::Font(S"Comic", 12,FontStyle::Regular);
Btn1->Size=System::Drawing::Size(30,30);
Btn1->Location= Point(100,100);

Controls->Add(Btn1);
Btn1->Click += new EventHandler(this, &CalForm::Button_Clicked);

}

[...]
void Setup_Button0()
{
Btn0=new Button();
Btn0->Text= S"0";
Btn0->Font=new System::Drawing::Font(S"Comic", 12,FontStyle::Regular);
Btn0->Size=System::Drawing::Size(30,30);
Btn0->Location= Point(100,190);
Controls->Add(Btn0);
Btn0->Click += new EventHandler(this, &CalForm::Button_Clicked);

}

void Setup_ButtonOn()
{
BtnOn=new Button();
BtnOn->Text= S"On";
BtnOn->Font=new System::Drawing::Font(S"Comic", 12,FontStyle::Regular);
BtnOn->Size=System::Drawing::Size(50,30);
BtnOn->Location= Point(50,100);
Controls->Add(BtnOn);
BtnOn->Click += new EventHandler(this, &CalForm::Button_Clicked);

}

void Setup_Buttonp()
{
Btnp=new Button();
Btnp->Text= S"+";
Btnp->Font=new System::Drawing::Font(S"Comic", 14,FontStyle::Regular);
Btnp->Size=System::Drawing::Size(30,30);
Btnp->Location= Point(200,100);
Controls->Add(Btnp);
Btnp->Click += new EventHandler(this, &CalForm::Button_Clicked2);

}
void Setup_Buttonm()
{
Btnm=new Button();
Btnm->Text= S"-";
Btnm->Font=new System::Drawing::Font(S"Comic", 14,FontStyle::Regular);
Btnm->Size=System::Drawing::Size(30,30);
Btnm->Location= Point(230,100);
Controls->Add(Btnm);
}

void Setup_Buttonmult()
{
Btnmult=new Button();
Btnmult->Text= S"x";
Btnmult->Font=new System::Drawing::Font(S"Comic", 14,FontStyle::Regular);
Btnmult->Size=System::Drawing::Size(30,30);
Btnmult->Location= Point(200,130);
Controls->Add(Btnmult);
}

void Setup_Buttoneg()
{
Btneg=new Button();
Btneg->Text= S"=";
Btneg->Font=new System::Drawing::Font(S"Comic", 14,FontStyle::Regular);
Btneg->Size=System::Drawing::Size(30,30);
Btneg->Location= Point(200,160);
Controls->Add(Btneg);
Btneg->Click += new EventHandler(this, &CalForm::Button_Clicked3);

}

void Setup_Text()
{
text1=new TextBox();
text1->Location=Point(100,50);
text1->Size=System::Drawing::Size(200);
text1->Multiline=false;
Controls->Add(text1);
}
void Button_Clicked(Object* pSender,EventArgs* pArgs)
{

//a =0;

if (pSender == Btn1)
// Envoie 1 dans le text box
{
text1->AppendText("1");
a=1;
}

else if (pSender ==Btn2)
{
text1->AppendText("2");
a=2;

}
else if (pSender == Btn3)
{
text1->AppendText("3");
a=3;

}

else if (pSender== Btn4)
{
text1->AppendText("4");
a=4;

}
else if (pSender == Btn5)
{
text1->AppendText("5");
a=5;

}
else if (pSender == Btn6)
{
text1->AppendText("6");
a=6;
}
else if (pSender == Btn7)
text1->AppendText("7");
else if (pSender == Btn8)
text1->AppendText("8");
else if (pSender == Btn9)
text1->AppendText("9");
else if (pSender == Btn0)
text1->AppendText("0");
else if (pSender == BtnOn)
text1->Clear();
}
void Button_Clicked2(Object* pSender,EventArgs* pArgs)
{

if (pSender = Btnp)
{
b=a;
text1->Clear();
}
}
void Button_Clicked3(Object* pSender,EventArgs* pArgs)

{
int i=res;

if (pSender == Btneg)
{
res=addition(a,b);
sprintf(var,"%d",res);
text1->AppendText(var);
}

}

int addition(int a,int b)
{
int res;
res = a+b;
return(res);
}

};

// Il s'agit du point d'entrée pour cette application
int _tmain(void)
{
Application::Run(new CalForm());
return 0;
}
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
24 févr. 2003 à 17:30
non, juste la déclaration de ta chaîne de caractère
et la façon dont tu la valorise
peut être aussi la libération
0
filipuce Messages postés 8 Date d'inscription mardi 1 juillet 2003 Statut Membre Dernière intervention 23 mai 2007
26 juin 2004 à 15:02
Tiens voila une fonction bien pratique utilisant les flux et template

template <class OUT, class IN>
OUT Convert(const IN & t)
{
//variable de sortie de type OUT
OUT tmp;
//declaration du flux
stringstream Flux;
//copie de l'entree dans le flux
Flux << t;
//copie du flux dans sortie
Flux >> tmp;

return tmp;
}


tu l'appelle en faisant : (tu peut meme faire un string->int)

int a=12456;
string s="1354";

s=Convert<string>(a);

a=Convert(s);


Filipuce - Si ce que tu as à dire n'est pas plus beau que le silence alors tais-toi
0
cs_jeep05 Messages postés 24 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 24 juillet 2005
24 juil. 2005 à 01:11
je vois pas ce que ce code apporte


si on met

> cout << s << " " << i << " " << f ;

au lieu de

> cout << buffer.str() << endl;



ca marche pareil ?!

Où est l'intérêt ?



En tout cas, je n'arrive pas à le mettre en application dans ce code :



unsigned short pause;

cin >> pause;



system("import -pause " << pause << "blabla";



j'ai apparemment besoin de convertir la variable pause en string pour la passer dans system().

comment faire ?


-------------------------------

Réponse au message :

-------------------------------



> bonjour,

> la fonction itoa fonctionne correctement, mais est un peu trop orientée 'C'

> voici ce que je te propose, l'utilisation du "stringstream"

> a toi d'y mettre les types que tu désire (ici un int et un float)

>

> #include <sstream>

> #include

> int main()

> {

> using namespace std;

> string s = "chaine";

> int i=0;

> float f = 2.01F;

> stringstream buffer;

> buffer << s << " " << i << " " << f ;

> //conversion nécessaire pour affichage

> cout << buffer.str() << endl;

> return 0;

> }
0
Rejoignez-nous