Partage
  • Partager sur Facebook
  • Partager sur Twitter

C++ récupération booléen

problème pour récupérer un type bool dans une chaîne

Sujet résolu
    2 avril 2008 à 8:46:04

    Bonjour à tous,

    j'ai un problème pour récupérer un booléen dans une chaîne. Comme vous le savez, l'instruction "%ld" permet de récupérer un entier (je l'utilise dans le code suivant pour un booléen, sans succès), et je me pose la question s'il n'existe pas une instruction pour récupérer un booléen.

    Voici un exemple de code :

    #include <iostream>

    using namespace std;

    int main()
    {
    char (*tableauPhrase)[100] = new char[4][100];
    char chaine1[100] = "";
    char chaine2[100] = "";

    bool booleen1 = false, booleen2 = false;

    for (int i = 0; i < 4; i++)
    {
    for (int j = 0; j < 100; j++)
    tableauPhrase[i][j] = 0;
    }

    strcpy(tableauPhrase[0], "Coucou!");
    strcpy(tableauPhrase[1], "1");
    strcpy(tableauPhrase[2], "3");
    strcpy(tableauPhrase[3], "Bonsoir!");

    sscanf(tableauPhrase[0], "%s", chaine1);
    cout << chaine1 << endl;
    sscanf(tableauPhrase[1], "%ld", &booleen1);
    cout << booleen1 << endl;
    sscanf(tableauPhrase[2], "%ld", &booleen2);
    cout << booleen2 << endl;
    sscanf(tableauPhrase[3], "%s", chaine2);
    cout << chaine2 << endl << endl;

    delete[] tableauPhrase;

    cout << booleen1 << endl << booleen2 << endl;

    system("pause");

    return 0;
    }
    <\code>

    Excusez-moi pour la présentation, car je suis nouveau et je n'ai pas l'habitude d'écrire souvent des messages ^^ .

    Merci d'avance pour toutes vos réponses.
    Bonne journée !

    • Partager sur Facebook
    • Partager sur Twitter
    Le premier et meilleur outil de l'Homme reste encore et toujours son cerveau.
      2 avril 2008 à 12:53:06

      je crois que le type bool ne renvoie pas un entier mais vrai ou faux (true/false).
      cela expliquerais pourquoi.
      • Partager sur Facebook
      • Partager sur Twitter
        2 avril 2008 à 19:21:35

        La seule chose que je vois de ++ dans ton code c'est les cout...

        1) les char[] ou char* sont à éliminer lorsque tu veux représenter une chaine de caractère : utilise std::string (c'est une petite adaptation)

        2) Grâce à 1) tu vas pouvoir éliminer aussi strcpy, strcmp, sscanf, sprintf... etc, etc, etc.

        3) La technique pour optimiser les tranformation TYPE de base vers chaine de caratères et vice/versa c'est d'utiliser les stringstream.

        stringstream est une classe qui permet d'utiliser les flux vers une et d'une std::string. Comme std::cout et std::cin sont des objet de std::ostream et std::istream qui vont vers et de la console.

        alors si tu peux faire :
        1. std::cout << booleen;


        Tu peux faire
        1. bool booleen = false;
        2. std::stringstream ss;
        3. ss << booleen;
        4. std::string s = ss.str();


        Note 1: la dernière ligne sert à copier la chaine contenue dans l'objet ss.

        Note 2: tu dois inclure "<sstream>" pour utiliser les std::stringstream

        L'inverse maintenant:
        1. bool booleen;
        2. // s est de type std::string et contient la transformation d'un bool en chaine de caratère
        3. std::stringstream ss( s );
        4. s >> booleen;
        • Partager sur Facebook
        • Partager sur Twitter
          6 avril 2008 à 18:47:57

          Bonjour,

          je vous remercie d'avoir pu m'aider à résoudre mon problème. :)

          Bonne fin de journée à tous !
          • Partager sur Facebook
          • Partager sur Twitter
          Le premier et meilleur outil de l'Homme reste encore et toujours son cerveau.

          C++ récupération booléen

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown