Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
866 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Convertir un char en const char* ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Convertir un char en const char* ?

n°477081
joce
Architecte / Développeur principal
"BugHunter"
Posté le 04-08-2003 à 15:53:18  profilanswer
 

J'aimerais convertir un char en const char*, mais le probleme c'est que j'ai un peu de mal :/
(en fait a la base je veux convertir un int en char*, mais comme y a qu'un seul caractere, je passe par un char).
Any idea ? :/

mood
Publicité
Posté le 04-08-2003 à 15:53:18  profilanswer
 

n°477086
polo021
Posté le 04-08-2003 à 15:56:21  profilanswer
 

int nb=5;
char tab[1];
itoa(nb,tab,10);
 
tab est ton pointeur.
 
 
C'est un truc comme ca que tu veux?

n°477090
joce
Architecte / Développeur principal
"BugHunter"
Posté le 04-08-2003 à 15:59:17  profilanswer
 

yep sauf que j'ai pas itoa :D
c'est pas grave v me demander en ajoutant 48, et en settant char tab[0] a la valeur de mon caractere et tab[1] a '\0'

n°477092
polo021
Posté le 04-08-2003 à 16:00:28  profilanswer
 

_itoa peut etre

n°477096
VisualC++
J'va y penser ...
Posté le 04-08-2003 à 16:01:22  profilanswer
 

Un truc du genre
 

Code :
  1. template <class T>
  2. inline const char* xToString(const T& t) {
  3. std::basic_ostringstream<char> o;
  4. o << t;
  5. return o.str().c_str();
  6. }


n°477100
VisualC++
J'va y penser ...
Posté le 04-08-2003 à 16:02:03  profilanswer
 

polo021 a écrit :

_itoa peut etre


 
itoa (_ ou pas) n est pas une fonction dispo suivant plateforme/compilo

n°477114
polo021
Posté le 04-08-2003 à 16:04:04  profilanswer
 

VisualC++ a écrit :


 
itoa (_ ou pas) n est pas une fonction dispo suivant plateforme/compilo


savais pas  :jap:

n°477116
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-08-2003 à 16:04:06  profilanswer
 

Y a un seul caractère tu dis ? Un nombre entre 0 et 9 donc ? c'est plus simple comme ça :
 
int n;
char c;
n = 8;
c = '0' + n;
[:spamafote]


Message édité par antp le 04-08-2003 à 16:24:08

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°477120
polo021
Posté le 04-08-2003 à 16:05:00  profilanswer
 

antp a écrit :

Y a un seul caractère tu dis ? Un nombre entre 0 et 9 donc ? c'est plus simple comme ça :
 
int n;
char c;
c = '8';
n = '0' + c;
[:spamafote]


 :non: il faut transformer de l'entier vers le caractere

n°477161
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-08-2003 à 16:17:00  profilanswer
 

C'est ce que je fais, non ?
edit: oups, j'avais pas vu que mon 8 était entre guillemets, sorry, c'était une faute de frappe


Message édité par antp le 04-08-2003 à 16:17:54

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le 04-08-2003 à 16:17:00  profilanswer
 

n°477162
LetoII
Le dormeur doit se réveiller
Posté le 04-08-2003 à 16:17:06  profilanswer
 

Spas vrai ça et sprintf ça vous dit rien les gars?
 
 :ouch:
 
En plus c du c++ donc tu utilise string et sstream, y a déjà un exemple dans un topic qui traine négligeament dans la dite section c++ :D


Message édité par LetoII le 04-08-2003 à 16:33:39

---------------
Le Tyran
n°477167
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 04-08-2003 à 16:18:30  profilanswer
 

LetoII a écrit :

Spas vrai ça et sprintf ça vous dit rien les gars?
 
 :ouch:  


Je plussoie ; j'ai beau être une sous-tanche en C++, c'est l'premier truc auquel j'aurais pensé [:ddr555]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°477168
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-08-2003 à 16:18:35  profilanswer
 

- sprintf pour un seul chiffre, c'est pas super utile :o
- c'est vrai que c'est mieux que itoa mais vu la question de base...


Message édité par antp le 04-08-2003 à 16:19:04

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°477169
polo021
Posté le 04-08-2003 à 16:19:11  profilanswer
 

antp a écrit :

C'est ce que je fais, non ?
edit: oups, j'avais pas vu que mon 8 était entre guillemets, sorry, c'était une faute de frappe


ben non toi tu convertis un char en entier il me semble mais le monsieur il a dit

Citation :

int en char*


 
 
bon c'est joce[:sinclaire]

n°477172
LetoII
Le dormeur doit se réveiller
Posté le 04-08-2003 à 16:19:42  profilanswer
 

antp a écrit :

- sprintf pour un seul chiffre, c'est pas super utile :o
- c'est vrai que c'est mieux que itoa mais vu la question de base...  


 
Ben c quand même plus propre, et puis CF mon edit pour le c++ :D


---------------
Le Tyran
n°477176
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 04-08-2003 à 16:21:47  profilanswer
 

antp a écrit :

- sprintf pour un seul chiffre, c'est pas super utile :o
- c'est vrai que c'est mieux que itoa mais vu la question de base...  


Ba c'est p'têt un seul chiffre mais la question c'est "convertir un entier vers un char *" pas "convertir un entier vers un char" [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°477179
Taz
bisounours-codeur
Posté le 04-08-2003 à 16:22:31  profilanswer
 

putain mais je vais tous vous tuer!!!!!!!!!!
 
Joce n'écoute rien. et PM moi si t'as des problèmes par ce que là j'ai envi de bricer tout le monde  [:taz]

n°477180
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-08-2003 à 16:23:21  profilanswer
 

polo021 a écrit :


ben non toi tu convertis un char en entier il me semble


 
bordel il fait trop chaud là :D
ce que je voulais faire :
 
int n;
char c;
n = 8;
c = '0' + n;  
 
à la place de c on peut mettre s[0] où s est un char * de plus de 1 octet.
 
bon sinon en effet il y a sprintf/snprintf, mais c'est bcp pour un truc qu'on peut convertir avec juste une addition je trouve :o


Message édité par antp le 04-08-2003 à 16:37:08

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°477183
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-08-2003 à 16:24:55  profilanswer
 

Taz a écrit :

putain mais je vais tous vous tuer!!!!!!!!!!
 
Joce n'écoute rien. et PM moi si t'as des problèmes par ce que là j'ai envi de bricer tout le monde  [:taz]  


 
:lol:
 
Le truc de faire + '0' spa bien ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°477187
LetoII
Le dormeur doit se réveiller
Posté le 04-08-2003 à 16:26:32  profilanswer
 

antp a écrit :


 
:lol:
 
Le truc de faire + '0' spa bien ?


 
En même temps j'ai l'impression que tt le monde a compris un truc différent  [:spamafote]  
 
Et puis moi quand il fait plus de 25° dans une pièce je fonctionne plus qu'à 10% de mes capacités  [:ddr555]


---------------
Le Tyran
n°477193
polo021
Posté le 04-08-2003 à 16:30:48  profilanswer
 

antp a écrit :


int n;
char c;
n = '8';//valeur ascii du caractere 8 => 56
c = '0' + n;  //valeur ascii du caractere 0 => 48 => c = 104


 :ouch: [:rofl]
t'es sur que c'est ca que tu voulais faire? Ou alors c'est moi qui me trompe cette fois ci  :heink:

n°477202
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-08-2003 à 16:37:54  profilanswer
 

polo021 a écrit :


 :ouch: [:rofl]
t'es sur que c'est ca que tu voulais faire? Ou alors c'est moi qui me trompe cette fois ci  :heink:  


 
bordel poster sur ce forum quand il fait chaud ça me réussit pas  [:sisicaivrai]  
le 8 devait pas être entre guillemets évidemment :sarcastic:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°477206
LetoII
Le dormeur doit se réveiller
Posté le 04-08-2003 à 16:39:06  profilanswer
 

antp a écrit :


 
bordel poster sur ce forum quand il fait chaud ça me réussit pas  [:sisicaivrai]  
le 8 devait pas être entre guillemets évidemment :sarcastic:


 
Les informaticiens, c comme les ordi, ça aime pas le chaud  [:ddr555]


---------------
Le Tyran
n°477214
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 04-08-2003 à 16:45:00  profilanswer
 

me suis contenter de faire ca finalement :
 
    const char str_type = 48 + (int) type;
    char vioType[2];
    vioType[0] = str_type;
    vioType[1] = '\0';
 
:D

n°477218
Taz
bisounours-codeur
Posté le 04-08-2003 à 16:48:45  profilanswer
 

envoies moi un PM que je pense à te répondre

n°477221
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-08-2003 à 16:50:18  profilanswer
 


 
'0' c'est trop propre à ton goût ? :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°477406
philou_a7
\_o&lt; coin ! &gt;o_/
Posté le 04-08-2003 à 19:35:51  profilanswer
 

toujours est il que pour faire int -> char* (et pas que 1 chiffre) le plus simple / rapide / standard ca reste le sprintf  :p

n°477412
Taz
bisounours-codeur
Posté le 04-08-2003 à 19:38:13  profilanswer
 

[:ban] (j'ai vraiment le bouton dessus là)
 
 

Citation :

bon je sais pas ce qu'on t'as conseillé, en tout cas, c'est mauvais. n'utilise pas/jamais des char* en C++, tu vas le regrette des que tu vas devoir faire des copies, comparaisons modifications.
 
tu veux convertir un char en char* -> tu veux convertir un char en string --->
 
string(n, caractère) crée une chaine de n caractères
donc avec un n=1, tout vas bien.
 
après, fait gaffe avec c_str() et data() il renvoie des pointeurs vers des zones temporaire valides le temps de l'appel uniquement.
 
et surtout grosse différence. un string peut contenir des 0
c_str() renvoie une const char * avec un 0 terminal.  
strlen(s.c_str())<=s.size()
alors que data renvoie un pointeur brut, aps de 0 terminal. la zone pointée fait exactement size() caractères

n°477440
Kristoph
Posté le 04-08-2003 à 20:07:02  profilanswer
 

philou_a7 a écrit :

toujours est il que pour faire int -> char* (et pas que 1 chiffre) le plus simple / rapide / standard ca reste le sprintf  :p  


 
snprintf ! Il y a assez de trou de sécurité dans le monde, ce n'est pas la peine d'en ajouter encore.

n°477639
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 04-08-2003 à 23:52:27  profilanswer
 

antp a écrit :


 
'0' c'est trop propre à ton goût ? :D

nan c'est juste que c'est des int à la base, donc avec 48 ca me permet d'avoir le char correspondant au numéro :)


---------------
Protèges carnets personnalisés & accessoires pour bébé
n°477647
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-08-2003 à 23:57:13  profilanswer
 

bah oui mais '0' c'est pas mieux que 48 tu trouves, niveau propreté du code ?


Message édité par antp le 04-08-2003 à 23:57:23

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°477659
Taz
bisounours-codeur
Posté le 05-08-2003 à 00:12:25  profilanswer
 

antp a écrit :

bah oui mais '0' c'est pas mieux que 48 tu trouves, niveau propreté du code ?

si.

n°477803
HelloWorld
Salut tout le monde!
Posté le 05-08-2003 à 10:54:34  profilanswer
 

Nivoportabilité aussi (y'a pas que l'ASCII).


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°477930
Taz
bisounours-codeur
Posté le 05-08-2003 à 12:48:06  profilanswer
 

HelloWorld a écrit :

Nivoportabilité aussi (y'a pas que l'ASCII).

ben niveau portabilité c'est zéro.

n°477932
LetoII
Le dormeur doit se réveiller
Posté le 05-08-2003 à 12:50:48  profilanswer
 

Taz a écrit :

ben niveau portabilité c'est zéro.


 
C le cas de le dire  :whistle:


---------------
Le Tyran
n°477934
Taz
bisounours-codeur
Posté le 05-08-2003 à 12:53:45  profilanswer
 

LetoII a écrit :


 
C le cas de le dire  :whistle:  

non, je veux dire que le cas de l'ASCII ou les '0'..'9' sont contigus et dans cet ordre est un cas particulier. dois y avoir des normes ou ils sont dispersé ou bien dans l'ordre décroissant

n°477938
LetoII
Le dormeur doit se réveiller
Posté le 05-08-2003 à 12:56:35  profilanswer
 

Taz a écrit :

non, je veux dire que le cas de l'ASCII ou les '0'..'9' sont contigus et dans cet ordre est un cas particulier. dois y avoir des normes ou ils sont dispersé ou bien dans l'ordre décroissant


 
J'avais bien compris, j'essayé juste de faire un brin d'humour. J'ajouterai que si l'éditeur que tu utilise pour tapper ton code n'utilise pas le même encodage que le système ça peut faire des trucs rigolo :D (faudra que je test ça un de ces jours)


Message édité par LetoII le 05-08-2003 à 12:56:57

---------------
Le Tyran
n°477951
antp
Super Administrateur
Champion des excuses bidons
Posté le 05-08-2003 à 13:06:30  profilanswer
 

Comme l'EBCDIC où y a des "trous" dans les lettres


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°478166
HelloWorld
Salut tout le monde!
Posté le 05-08-2003 à 15:13:59  profilanswer
 

Citation :

ben niveau portabilité c'est zéro.


 
Par rapport à 48, je dirais que c'est 0.5 :D


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Convertir un char en const char* ?

 

Sujets relatifs
convertir un datetime en date avec SQL serverConvertir des milisecondes en heures, minutes, secondes, ms
[C]Probleme de char et string[REGEX&PHP] Convertir les dates du format 2001-01-25 à du 25/01/2001 ?
[C++] rechercher un string dans un string sans convertire en char * ?convertir une animation Java en format video ou autre
convertir les url dans un text'const' a quoi sert ca sert dans une fonction
Convertir un BMP en JPGquestion sur les const &
Plus de sujets relatifs à : Convertir un char en const char* ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR