Convertir un char en const char* ?

Convertir un char en const char* ? - C++ - Programmation

Marsh Posté le 04-08-2003 à 15:53:18    

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 ? :/

Reply

Marsh Posté le 04-08-2003 à 15:53:18   

Reply

Marsh Posté le 04-08-2003 à 15:56:21    

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

Reply

Marsh Posté le 04-08-2003 à 15:59:17    

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'

Reply

Marsh Posté le 04-08-2003 à 16:00:28    

_itoa peut etre

Reply

Marsh Posté le 04-08-2003 à 16:01:22    

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. }


Reply

Marsh Posté le 04-08-2003 à 16:02:03    

polo021 a écrit :

_itoa peut etre


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

Reply

Marsh Posté le 04-08-2003 à 16:04:04    

VisualC++ a écrit :


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


savais pas  :jap:

Reply

Marsh Posté le 04-08-2003 à 16:04:06    

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
Reply

Marsh Posté le 04-08-2003 à 16:05:00    

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

Reply

Marsh Posté le 04-08-2003 à 16:17:00    

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
Reply

Marsh Posté le 04-08-2003 à 16:17:00   

Reply

Marsh Posté le 04-08-2003 à 16:17:06    

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
Reply

Marsh Posté le 04-08-2003 à 16:18:30    

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.
Reply

Marsh Posté le 04-08-2003 à 16:18:35    

- 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
Reply

Marsh Posté le 04-08-2003 à 16:19:11    

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]

Reply

Marsh Posté le 04-08-2003 à 16:19:42    

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
Reply

Marsh Posté le 04-08-2003 à 16:21:47    

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.
Reply

Marsh Posté le 04-08-2003 à 16:22:31    

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]

Reply

Marsh Posté le 04-08-2003 à 16:23:21    

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
Reply

Marsh Posté le 04-08-2003 à 16:24:55    

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
Reply

Marsh Posté le 04-08-2003 à 16:26:32    

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
Reply

Marsh Posté le 04-08-2003 à 16:30:48    

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:

Reply

Marsh Posté le 04-08-2003 à 16:37:54    

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
Reply

Marsh Posté le 04-08-2003 à 16:39:06    

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
Reply

Marsh Posté le 04-08-2003 à 16:45:00    

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

Reply

Marsh Posté le 04-08-2003 à 16:48:45    

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

Reply

Marsh Posté le 04-08-2003 à 16:50:18    


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


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 04-08-2003 à 19:35:51    

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

Reply

Marsh Posté le 04-08-2003 à 19:38:13    

[: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

Reply

Marsh Posté le 04-08-2003 à 20:07:02    

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.

Reply

Marsh Posté le 04-08-2003 à 23:52:27    

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é
Reply

Marsh Posté le 04-08-2003 à 23:57:13    

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
Reply

Marsh Posté le 05-08-2003 à 00:12:25    

antp a écrit :

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

si.

Reply

Marsh Posté le 05-08-2003 à 10:54:34    

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


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 05-08-2003 à 12:48:06    

HelloWorld a écrit :

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

ben niveau portabilité c'est zéro.

Reply

Marsh Posté le 05-08-2003 à 12:50:48    

Taz a écrit :

ben niveau portabilité c'est zéro.


 
C le cas de le dire  :whistle:


---------------
Le Tyran
Reply

Marsh Posté le 05-08-2003 à 12:53:45    

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

Reply

Marsh Posté le 05-08-2003 à 12:56:35    

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
Reply

Marsh Posté le 05-08-2003 à 13:06:30    

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


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 05-08-2003 à 15:13:59    

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
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed