C++ problem char
Fermé
Julien
-
23 avril 2012 à 20:03
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 25 avril 2012 à 20:00
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 25 avril 2012 à 20:00
A voir également:
- C++ problem char
- Char ** - Forum C
- Char java - Astuces et Solutions
- Ascii char - Guide
- To char sql ✓ - Forum Bases de données
- Convertir char en int c - Forum C
5 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 816
24 avril 2012 à 19:06
24 avril 2012 à 19:06
Bonjour,
char test='h';
Avec cette instruction, test représente le code ascii de 'h' (104). Donc, c'est comme si tu faisais char test=104.
La concaténation de la chaîne "mon char : " avec test donne donne "mon char : 104"; rien d'anormal.
C'est quoi le problème ?
char test='h';
Avec cette instruction, test représente le code ascii de 'h' (104). Donc, c'est comme si tu faisais char test=104.
La concaténation de la chaîne "mon char : " avec test donne donne "mon char : 104"; rien d'anormal.
C'est quoi le problème ?
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
24 avril 2012 à 09:57
24 avril 2012 à 09:57
Nous non plus nous ne pouvons pas comprendre.
montre nous ton problème. Là tu montre juste que tu affiche "104", ce qui est surement normal.
montre nous ton problème. Là tu montre juste que tu affiche "104", ce qui est surement normal.
linkcr15
Messages postés
362
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
31 mars 2016
13
Modifié par linkcr15 le 24/04/2012 à 09:59
Modifié par linkcr15 le 24/04/2012 à 09:59
Oui je ne vois pas où est le problème car h vaut bien 104 (voir table ASCII : http://www.asciitable.com/index/asciifull.gif
dharth
Messages postés
140
Date d'inscription
dimanche 6 avril 2008
Statut
Membre
Dernière intervention
23 août 2012
13
24 avril 2012 à 11:57
24 avril 2012 à 11:57
Pour l'affichage moi j'utilise cout.
#console: ./tonprog
h
#console:
tu aura bien un h qui sera affiché (suivit d'un '\n' du au std::endl)
#include <iostream>
int main()
{
char test = 'h';
std::cout << test << std::endl;
return (0);
}
#console: ./tonprog
h
#console:
tu aura bien un h qui sera affiché (suivit d'un '\n' du au std::endl)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour vos réponses, je ne savais pas que les "char" renvoyaient naturellement la valeur ASCII en C++.
Je trouvais ca étrange, mais puisque c'est comme ca j'ai cherché une solution pour garder le caractère 'h' et j'ai trouvé ca :
stringstream ss;
string s
char test = 'h';
ss << test;
ss >> s;
Console::WriteLine("Mon char : "+ s );
Et la ca m'affiche bien :
Mon char : h
Dans la console
Je trouvais ca étrange, mais puisque c'est comme ca j'ai cherché une solution pour garder le caractère 'h' et j'ai trouvé ca :
stringstream ss;
string s
char test = 'h';
ss << test;
ss >> s;
Console::WriteLine("Mon char : "+ s );
Et la ca m'affiche bien :
Mon char : h
Dans la console
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 816
24 avril 2012 à 19:45
24 avril 2012 à 19:45
Etrange ?
Il n'y a rien d'étrange, ni de magique dedans. char représente un nombre de 0 à 255 (pour faire simple). Il ne faut pas confondre 'h' (caractère représentant le code ascii 104) avec "h".
Si tu fais string test = "h". Tu pourras faire "Mon char : " + test; sans problème.
C'est d'ailleurs ce que tu fais en passant par stringstream.
Il n'y a rien d'étrange, ni de magique dedans. char représente un nombre de 0 à 255 (pour faire simple). Il ne faut pas confondre 'h' (caractère représentant le code ascii 104) avec "h".
Si tu fais string test = "h". Tu pourras faire "Mon char : " + test; sans problème.
C'est d'ailleurs ce que tu fais en passant par stringstream.
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
25 avril 2012 à 08:18
25 avril 2012 à 08:18
juste pour pinaillé un peu; char peut représenté des nombre de -128 à 127.
Il n'était pas clair dans ton problème du dessus que ce n'était qu'un problème d'affichage.
Il n'était pas clair dans ton problème du dessus que ce n'était qu'un problème d'affichage.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 816
25 avril 2012 à 08:23
25 avril 2012 à 08:23
Je savais très bien qu'on me reprendrait dessus. C'est precisément pour ça que j'ai explicitement mis (pour faire simple). Mais ici ça ne change pas le raisonnement : concaténation d'une chaîne et d'un entier. C'est normal que l'affichage soit comme ça.
Char Snipeur
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 328
25 avril 2012 à 08:28
25 avril 2012 à 08:28
Console::WriteLine("Mon char : "+ s );
n'est pas un standard C++, il faudrait savoir d'où ça vient. Je suis même étonné qu'il affiche 104. Il doit y avoir un mécanisme du genre Console::WriteLine(String); + un conversion implicite de int vers String et de const char* vers String.
n'est pas un standard C++, il faudrait savoir d'où ça vient. Je suis même étonné qu'il affiche 104. Il doit y avoir un mécanisme du genre Console::WriteLine(String); + un conversion implicite de int vers String et de const char* vers String.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 816
25 avril 2012 à 20:00
25 avril 2012 à 20:00
Effectivement Console::WriteLine() n'est pas un standard C++. Mais il utilise VS 2010 et il doit donc s'agir de C++ CLI (flag /clr).
Dans ce cas, les chaînes "..." sont converties en type String.
Ensuite, il s'agit de la surchage de l'opérateur "+" qui fait "Mon char : 104".
Dans ce cas, les chaînes "..." sont converties en type String.
Ensuite, il s'agit de la surchage de l'opérateur "+" qui fait "Mon char : 104".