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 :

De string � code ASCII


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Homme Profil pro
    retrait�
    Inscrit en
    Septembre 2010
    Messages
    116
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : retrait�
    Secteur : B�timent Travaux Publics

    Informations forums :
    Inscription : Septembre 2010
    Messages : 116
    Par d�faut De string � code ASCII
    Salut � tous,
    Comment, SVP, obtenir le code ASCII de la lettre extraite dans ce bout de code?
    D'apr�s la FAQ, j'ai cru comprendre qu'il fallait d'abord convertir cette lettre en 'char', mais je n'ai pas compris l'explication ni l'exemple qui est donn�.

    Merci d'avance.
    L.P.
    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
     
    #include <iostream>
     
    using namespace std;
     
    int main()
    {
        string str("Hello");
        string sub = str.substr(1,1); // Extraction de la deuxieme lettre seulement
    // Ici je souhaiterais obtenir le code ASCII de la lettre extraite ci- dessus
     
        cout << sub << endl;
     
        return 0;
    }

  2. #2
    Membre �clair� Avatar de supaplex
    Homme Profil pro
    D�veloppeur en syst�mes embarqu�s
    Inscrit en
    Avril 2012
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activit� : D�veloppeur en syst�mes embarqu�s

    Informations forums :
    Inscription : Avril 2012
    Messages : 47
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <iostream>
     
    using namespace std;
     
    int main()
    {
        string str("Hello");
        string sub = str.substr(1,1); // Extraction de la deuxieme lettre seulement
    // Ici je souhaiterais obtenir le code ASCII de la lettre extraite ci- dessus
     
        cout << int(sub[0]) << endl;
     
        return 0;
    }

  3. #3
    Expert confirm�
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 772
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
        string str("Hello");
        const char* ascii_str = str.c_str();
     
        if ((str.length() > 1) && (ascii_str != NULL)) {
            printf("%d", ascii_str[1]);
        }

  4. #4
    Membre Expert
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2011
    Messages
    760
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, H�rault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 760
    Par d�faut
    Comme tout le monde s'y met....

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <iostream>
    #include <string>
     
    int main()
    {
        std::string str("Hello");
        std::cout << int(sub[1]) << std::endl;
    }
    Au passage, il n'y a aucune raison d'utiliser substr.

  5. #5
    Membre confirm�
    Homme Profil pro
    retrait�
    Inscrit en
    Septembre 2010
    Messages
    116
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : retrait�
    Secteur : B�timent Travaux Publics

    Informations forums :
    Inscription : Septembre 2010
    Messages : 116
    Par d�faut
    Salut � tous,
    Merci pour vos promptes r�ponses.
    J'ai h�te de les essayer toutes.
    Merci encore � Koala01 pour son message � propos des conditionnelles que j'ai d�couvert par hasard en 'postant' celui en cours.
    Je lui promets de faire l'exercice qu'il m'a donn� d�s que j'ai fini celui-l�.

    L.P.

  6. #6
    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
    Comme tu as eu plein de code, mais pas d'explications, en voici:

    la fonction string::substr retourne une string.
    l'op�rateur [] (string::operator[]) retourne un char.

    les op�rateurs << de ostream sont nombreux, le compilateur cherche le plus adapt� aux types des op�randes.
    Il trouve respectivement:
    1. operator << (ostream &, string const&), qui affiche la chaine complete
    2. ostream::operator << (char), qui affiche le caract�re


    Mais il en existe d'autres, potentiellement plus int�ressant. Par exemple, ostream::operator << (int), qui affiche un entier.
    La solution est donc de faire choisir celle-ci au compilateur, en convertissant le caract�re � afficher.

    Il y a plusieurs solutions, parmi:
    • le vieux cast � la C, qui est d�conseill�, voire d�pr�ci�: cout << (int) (str[1]) << endl;
    • la conversion "fonction style", c'est � dire la notation "constructeur de int": cout << int(str[1]) << endl;
    • la conversion explicite: cout << static_cast<int>(str[1]) << endl;

    Je recommande vivement cette derni�re: elle explicite parfaitement qu'on fait une conversion, et on peut rechercher facilement ce mot cl� static_cast (id�alement, je chercherai "_cast").


    Note que str.sub(1, 1)[0] retourne la m�me valeur que str[1] (� ceci pr�s que c'est une r�f�rence sur une copie du caract�re original).

  7. #7
    Membre confirm�
    Homme Profil pro
    retrait�
    Inscrit en
    Septembre 2010
    Messages
    116
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : retrait�
    Secteur : B�timent Travaux Publics

    Informations forums :
    Inscription : Septembre 2010
    Messages : 116
    Par d�faut
    Salut � tous et en particulier � 'ternel' pour ses explications acad�miques.
    Pour situer le probl�me je dois dire si que jadis.. j'ai d�velopp� quelques applications de gestion en VBA exclusivement pour Excel et Access, je m'initie � peine (2 ou 3 semaines) � C++ avec pour support (en + du site, bien entendu) les livres: "Apprendre le C++", de Claude Delannoy et "Programmez avec le langage c++", de Mathieu Nebra et Matthieu Schaller.
    Je n'ai pas d�pass� la page 100 de chacun d'eux et je n'ai pas encore trouv� mes 'marques' avec l'�diteur Code::Blocks. Les choses d�cantent lentement.
    Je m'essaye � quelques exercices pour me familiariser avec la syntaxe mais,
    -le vieux cast � la C...
    -la conversion "fonction style"...
    -la notation "constructeur de int"...
    et
    -la conversion explicite...
    ne me parlent pas encore mais j'esp�re que �a va venir.
    En tous cas j'ai scrupuleusement recopi� toutes ces explications dont je ne doute pas que dans quelques mois elles me seront parfaitement famili�res.

    Merci encore.

    P.S.
    le code de 'foetus' ne s'est pas compil�. Il doit manquer un include quelque chose. C'est dommage car j'aurais bien voulu comprendre la conditionnelle qu'il a ajout�.

    L.P.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. convertir code ascii a string
    Par chadj dans le forum NetBeans
    R�ponses: 1
    Dernier message: 02/05/2013, 13h24
  2. [D�butant] Code Ascii dans variable de type string
    Par Nixeus dans le forum C#
    R�ponses: 2
    Dernier message: 03/01/2012, 15h32
  3. Remplacer char dans string par code ASCII
    Par ThomasParis dans le forum Langage
    R�ponses: 2
    Dernier message: 16/07/2010, 11h47
  4. transformer code ascii en string ?
    Par italiasky dans le forum Langage
    R�ponses: 1
    Dernier message: 20/10/2008, 11h39
  5. [String]Comment etendre le mon Code ASCII??
    Par lanfeustdetroll dans le forum API standards et tierces
    R�ponses: 24
    Dernier message: 25/07/2005, 14h42

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