IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SL & STL C++ Discussion :

numeric_limits et char


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Par défaut numeric_limits et char
    Bonjour bonjour !

    Je fais de la lecture de fichiers binaires codés en "char".
    Il se trouve que pour effectuer certains traitements, j'ai besoin d'utiliser "numeric_limits" pour garder un maximum de généricité.

    Le hic, c'est que je n'arrive pas à me servir d'un code aussi simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #include <iostream>
    #include <limits>
    using namespace std;
     
    int main()
    {
    	typedef char  output ;
    	cout << numeric_limits<output>::max() << endl;
    	cout << numeric_limits<output>::min() << endl;
     
    	cout << numeric_limits<char>::max() << endl;
    	cout << numeric_limits<char>::min() << endl;
     
    	cout << numeric_limits<short>::max() << endl;
    	cout << numeric_limits<short>::min() << endl;
     
    	char a,b ;
    	a = 10 ;
    	b = 5 ;
    	cout << a << endl;
    	cout << b << endl;
     
    	return 0 ;
    }
    Il compile bien, mais n'affiche aucun des résultats attendus, à part pour les lignes concernant "short" ! Quelqu'un aurait l'astuce pour manipuler les char comme de simples nombres ?

    Merci !

    Swaraj

  2. #2
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    pour le char c'est [-128, +127] ou [0,255] ? question d'interpretation du bit de signe


    jette un oeil la dessus cela pourra peu être t'aider
    http://www.cplusplus.com/doc/tutorial/variables/
    http://www.cplusplus.com/reference/clibrary/climits/

  3. #3
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    La signature de std::numeric_limits<T>::max() c'est :

    Donc il te renvoie un char avec le code ASCII 127 ou -176 donc des caractéres non supporté par la console, d'où les signes 'bizarres'.
    Le bon code serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static_cast<int>(numeric_limits<char>::max())

  4. #4
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Par défaut
    Gut ! J'achète le " -'0' "

    Encore merci !

    Tschüss !

  5. #5
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    ou utiliser un bon vieux printf cela devrais marcher aussi.

  6. #6
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Oublie la grosse bêtise que j'ai dit et utilise un static_cast<int>. J'édite vite, ..

    Shame on me

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/07/2003, 16h24
  2. Char(x) -> chaine concaténée d'espaces ?
    Par rgz dans le forum Débuter
    Réponses: 7
    Dernier message: 27/06/2003, 11h59
  3. [PostgreSql] Problème de cadreage de char !!!
    Par moipastoi dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/05/2003, 18h01
  4. Réponses: 6
    Dernier message: 24/03/2003, 17h11
  5. Traitement d'un char* renvoyé par une DLL en C++
    Par LuluTchab dans le forum Langage
    Réponses: 4
    Dernier message: 22/03/2003, 21h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo