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 :

Comment convertir une valeur numérique en une phrase ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Cimentage
    Inscrit en
    Septembre 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Cimentage
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2014
    Messages : 44
    Par défaut Comment convertir une valeur numérique en une phrase ?
    Salut à tous..

    Je viens vous voir car j'ai besoin de votre aide sur un petit problème qui me turlupine..

    Alors voilà, admettons que je convertisse une chaîne de manière à avoir sa valeur numérique comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout << (int)"hello" << endl;
    ceci fonctionne car j'obtiens maintenant 4718740

    Néanmoins, si je procède comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string h = "hello";
    cout << (int)h << endl;
    Cela ne fonctionne plus..

    J'obtiens l'erreur "invalid cast from type 'std::string {aka std::basic_string<char>}' to type 'int'|"

    Comment faire pour que cela fonctionne ?

    Dernière question ( et certainement la plus importante en fin de compte ! )

    Une fois que j'ai obtenu ma valeur numérique de "hello" ( autrement-dit 4718740 ), comment reconvertir cette série de chiffres en string de manière à recomposer le mot "hello" ?

    Merci infiniment à tous :-D

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 403
    Par défaut
    Ce que tu fais n'a pas de sens. Tu ne converties pas la chaîne en nombre (tu converties un pointeur en entier).
    Qu'est ce que tu veux faire ?

  3. #3
    Membre averti
    Homme Profil pro
    Cimentage
    Inscrit en
    Septembre 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Cimentage
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2014
    Messages : 44
    Par défaut
    Salut à toi, merci pour ta réactivité :-)

    Je devrais donc extirper chaque lettre de la chaîne dans une boucle et convertir chaque caractère en int plutôt ?

    Et bien en fin de compte, je compte obtenir la valeur numérique d'un mot et pouvoir restituer le mot à partir de cette valeur numérique également..

    ( Pour envoyer une information avec une socket & un packet en mangeant le moins possible de la bande passante, j'ai pensé qu'il était plus intéressant d'envoyer une valeur entière au serveur et que le serveur convertisse la valeur entière en string de son côté )

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Ta conversion static_cast<int>("hello") fais quelque chose pour la simple raison que le type de "hello" est convertible en int. Et pour cause, "hello" est un char const [], convertible (comme tout tableau) en pointeur char const*, qui est lui-même convertible en entier.

    le nombre que tu affiches n'est pas la valeur de "hello", mais l'adresse où elle est rangée.

    Tu peux utiliser le fait que char soit un type entier, mais il faut parcourir manuellement chaque caractère de la chaine (via [])

    Cela dit, dans le cadre de ton optimisation, c'est totalement inutile, car une chaine est déjà optimale, un char étant plus petit qu'un int.
    Pour optimiser mieux, il faudrait recourir à une vraie compression, et donc une décompression à l'arrivée. C'est assez peu souvent utile.

    A moins bien sur que ton texte à envoyer soit la représentation d'une valeur numérique comme "1290790".

  5. #5
    Membre averti
    Homme Profil pro
    Cimentage
    Inscrit en
    Septembre 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Cimentage
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2014
    Messages : 44
    Par défaut
    Merci énormément ternel, la rapidité de réponse sur ce forum est absolument hallucinante ! Je reviendrais

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Est-ce que tu comptes n'avoir qu'un nombre fini et connu de phrases ?
    > Si oui, tu les stockes quelquepart et envoie l'index qui le représente
    > Si non, c'est absolument strictement impossible
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Citation Envoyé par FrostfallDelphi Voir le message
    je compte obtenir la valeur numérique d'un mot et pouvoir restituer le mot à partir de cette valeur numérique également..

    ( Pour envoyer une information avec une socket & un packet en mangeant le moins possible de la bande passante, j'ai pensé qu'il était plus intéressant d'envoyer une valeur entière au serveur et que le serveur convertisse la valeur entière en string de son côté )
    Ce que tu veux faire se nomme soit :

    • compression si tu cherches à réduire la taille d'un ensemble de données en supprimant les redondances ;
    • hachage si tu cherches à associer un ensemble de données à une clef numérique afin d'identifier, classer, trier ce type d'ensemble (sans avoir à comparer la totalité des données, s'entend).


    Dans les deux cas, le sujet a été abondamment recherché et des implémentations de facto standard et éprouvées existent. Quel est ton cas d'utilisation ?

  8. #8
    Membre actif
    Homme Profil pro
    Etudiant-Benevole pour Electronic-MasterX
    Inscrit en
    Janvier 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Islande

    Informations professionnelles :
    Activité : Etudiant-Benevole pour Electronic-MasterX
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2015
    Messages : 70
    Par défaut
    Magnifique!

    Si tu veux tout bêtement convertir une chaine de caractère en nombre alors moi je vois deux méthodes possible:

    1- Methode Facile: tu parcourres la chaines de caractère et pour chaque caractère tu donne son code ASCII. le code est ASCII est unique pour chaque caractère donc il est facilement dechiffrable si tu ecris biensur la bonne fonction pour le dechriffre.

    2- Methode plus compliquée: il y'a dans la théorie des arbres certains arbres que l'on appelle les arbres de Huffmann. ces arbres permettent de coder chaque caractère d'un texte en binaire en fonction du nombre de fois qu'ils reviennent dans le texte.
    Tu peux essayer essayer d'en savoir plus dessus. c'est plutôt pratique vraiment quand tu n'essaie pas de trop mettre un point d'honneur sur la securité des données transférées. et aussi l'arbre ne te permet pas que de coder des chaines de caractère mais en fait tout caractère apparaissant dans un texte.

    Perso je possède une version de ce code en java, donc je peux dire qu'il est pas trop diifficile à ecrire .

    Fais le meilleur choix

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/05/2010, 11h19
  2. récupérer une valeur numérique dans une chaine
    Par EFFLYINGJOKER dans le forum Développement
    Réponses: 2
    Dernier message: 30/03/2010, 16h26
  3. [Débutant] Validation d'une valeur numérique dans une variable String
    Par anto84 dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 11/07/2007, 10h26
  4. Réponses: 10
    Dernier message: 30/11/2006, 23h06
  5. Réponses: 3
    Dernier message: 22/01/2005, 22h06

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