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

 C++ Discussion :

Renvoi du nombre de caractères d'une variable


Sujet :

C++

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 81
    Points : 50
    Points
    50
    Par défaut Renvoi du nombre de caractères d'une variable
    Bonjour.
    Je débute en C++ et, au risque de poser une question déjà postée(), j'aimerais savoir si il existe une instruction qui renvoi le nombre de caractères d'une variable.

    int Mavariable=123;

    J'aimerais que l'opérateur me renvoit 3.


    Merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Hello

    ça peut se faire simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int nbChar(int n) {
       int ret = 0;
       while(n != 0) {
          n /= 10;
          ++ret;
       }
       return ret;
    }
    Ça peut se faire aussi par une conversion en string (via stringstream par exemple) puis en prenant la taille du string généré. Ca à l'avantage de marcher pour tous les types à virgule (float / double), mais le résultat peut être "bizarre" pour ces types, dû aux erreurs d'approximations.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    template <class T>
    int nbChar(T n) {
       std::stringstream ss;
       ss << n;
       auto ret = ss.str().size();
       return n >= 0 ? ret: ret-1; // ne pas compter le signe moins
    }

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 615
    Points : 30 628
    Points
    30 628
    Par défaut
    Salut,
    Citation Envoyé par simac Voir le message
    Bonjour.
    Je débute en C++ et, au risque de poser une question déjà postée(), j'aimerais savoir si il existe une instruction qui renvoi le nombre de caractères d'une variable.

    int Mavariable=123;

    J'aimerais que l'opérateur me renvoit 3.


    Merci.
    Pas avec un entier.

    Un entier, c'est une valeur et le nombre de caractères qui permettent de représenter cette valeur dépend de la convention utilisée pour représenter la dite valeur.

    Or, si l'humain apprécie énormément la convention décimale (dix chiffres, allant de 0 à 9 inclus), il existe d'autres conventions :
    • binaire (deux chiffres 0 et 1) qui correspond à la manière dont les valeurs sont représentées en interne dans un ordinateur (le courent passe ou ne passe pas)
    • hexadécimale (16 "symboles" : les dix chiffres (de 0 à 9 inclus) + 6 lettres A, B, C, D, E et F) qui fournit une représentation plus "facilement lisible" que le binaire car regroupant 4 bits pour chaque "symbole" à afficher.
    Du coup, la valeur 123 peut tout aussi bien être représentée par 1111011 en binaire que par 7B en hexadécimal : Ce sont des représentations différentes de la même valeur qui est composée de 1* 10^2 + 2*10^1 + 3*10^0.

    Il n'y a donc pas de "caractères" à proprement parler : il y a une valeur spécifique

    Si tu veux pouvoir calculer le nombre de caractères pour représenter une valeur spécifique, tu dois:
    • savoir dans quelle base tu veux obtenir cette représentation (binaire / décimale ou hexadécimale) et
    • convertir ta valeur en chaine de caractères qui représente la valeur souhaitée dans une base donnée
    Ce n'est qu'une fois que cette conversion est faite qu'il te sera possible de vérifier le nombre de caractères qui composent la valeur (numérique) qui t'intéresse

    PS : et la chose qui va mettre ton cerveau à ébullition, c'est que la valeur qui correspond, au niveau de l'ordinateur, au caractère '1' n'est pas la valeur 1, mais bien la valeur 49 qui correspond à l'indice du caractère '1' dans une table de conversion connue sous le petit nom de "table ASCII"
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Bonjour,
    Si je ne m'abuse, le logarithme a base 10 renvoie a un près le résultat que tu attend. Le problème est qu'il va retourner une valeur flottante qu'il faudra convertir en int.
    Il y a bien une fonction qui fait ça : c'est la fonction log10 dans <cmath>.

    La solution à ton problème serait donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include <cmath>
    //...
    int nombreDeChiffre(int valeur)
    {
    	return (int)(log10(float(valeur)) + 1)
    }
    Pour plus d'info sur cette fonction mathématique : http://fr.wikipedia.org/wiki/Logarithme_d%C3%A9cimal

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Merci d'avoir répondu, vous m'avez beaucoup aider!

    Désolé pour le retard, j'ai des problèmes avec la connexion internet.

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

Discussions similaires

  1. [Twig] Limiter le nombre de caractères sur une variable
    Par ch0c4 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/02/2013, 17h09
  2. Nombre de caractère dans une "variable as double"
    Par leblma dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 12/07/2011, 18h08
  3. Réponses: 9
    Dernier message: 21/06/2011, 15h32
  4. COmpter le nombre de caractére dans une variable
    Par oliv27400 dans le forum MATLAB
    Réponses: 2
    Dernier message: 10/06/2010, 15h17
  5. Réponses: 2
    Dernier message: 25/03/2009, 09h45

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