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 :

cin >> pour sortir d'un while


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 75
    Par défaut cin >> pour sortir d'un while
    Bonjour,
    Je souhaite sortir d'une boucle d'ecoute de serveur grace a l'entree de "Y" au clavier.

    J'avais en premier ecris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
       char* stopServer = "";
    	while(stopServer != "Y") {
    		cout<<"Waiting for a socket connexion"<<endl;
    		queryStr = getQueryFromSocket();
     
    		answerStr = sendAndRecieve(queryStr);
     
    		sendAnswerToSocket("Server reply: xml string");
     
    		cout<<"Close server: Y/N"<<endl;
    		cin>>stopServer;
    	}
    Et le programme me demandais jamais mon avis, et sortais jamais :

    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
    $./a.out 
    stub: send to motisRequest read from motisReply
    check point fifoExist
    Test if FIFO motisRequest.fifo is already there ...
    Open FIFO motisRequest.fifo for writing and wait for the other side ...
    OK, here we go ...
    Open FIFO motisReply.fifo for reading and wait for the other side ...
    ...initialized
    Server initialized
    Waiting for a socket connexion
    Y
    Socket connected
    Query String: 29 3 2007 10 59 29 3 2007 10 59 D 0 8004338 %% 16 8000002
    send: 29 3 2007 10 59 29 3 2007 10 59 D 0 8004338 %% 16 8000002
    send request...done 
    waiting for reply...strange: nothing to read
    stub got: 
    Answer from server: Server reply: xml string
    Close server: Y/N
    Waiting for a socket connexion
    y
    ^C
    Puis j'ai chercher, et j'ai lu : http://jlecomte.ifrance.com/c++/c++-...output-fr.html et particulierement le paragraphe [15.2]Pourquoi mon programme part-il en boucle infinie quand quelqu'un entre un caractère invalide?

    Du coup, j'ai ecris ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
       	while((cin>>stopServer) && (stopServer != "Y")) {
    		cout<<"Waiting for a socket connexion"<<endl;
    		queryStr = getQueryFromSocket();
     
    		answerStr = sendAndRecieve(queryStr);
     
    		sendAnswerToSocket("Server reply: xml string");
     
    		cout<<"Close server: Y/N"<<endl;
     
    	}
    Mais la il sort tout le temps...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $./a.out 
    stub: send to motisRequest read from motisReply
    check point fifoExist
    Test if FIFO motisRequest.fifo is already there ...
    Open FIFO motisRequest.fifo for writing and wait for the other side ...
    OK, here we go ...
    Open FIFO motisReply.fifo for reading and wait for the other side ...
    ...initialized
    Server initialized
    stub: request shutdown

    Je suis a la recherche d"une solution ! Merci d'avance

    PS : le clavier qwerty explique l'absence d'accent dans mon message.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    char*, avant de pouvoir représenter une chaîne type C, c'est avant tout un pointeur. Donc le comparer à une autre chaîne (un autre pointeur) avec l'opérateur != ne renverra jamais vrai.

    Utilise plutôt std::string (surtout que comme tu le manipules, ton programme pourrait tout aussi bien crasher).

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 75
    Par défaut
    En fait, c'etait un string, jusqu'a que je tombe sur un bout de code qui fait deviner un entier, ce qui m'a fait penser que string n'etait pas adapter, puis j'ais mis un char, mais le compilateur rallait parce que ca faisait un caste illegal d'un char en char*, alors je lui ai mis son char*

    Je suis revenu en string donc maintenant, mais le comportement est toujours le meme

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Le code est exactement le même, au type près ?

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 75
    Par défaut
    oui

  6. #6
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Supposition un peu basique, mais dans ton premier exemple, plus la sortie correspondante, tu demandes à sortir sur Y, mais tu as saisi y. As-tu tenté en majuscule? (Avec std::string, c'est pareil, c'est pour ça que je suppose ça )

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

Discussions similaires

  1. Probleme pour sortir d'une boucle while
    Par aikinhdo dans le forum Langage
    Réponses: 0
    Dernier message: 27/07/2007, 15h01
  2. Pour sortir d'un programme Perl legalement
    Par Pauli dans le forum Langage
    Réponses: 1
    Dernier message: 03/05/2007, 16h38
  3. Réponses: 2
    Dernier message: 20/03/2007, 18h22
  4. tabulation pour sortir d'un sous formulaire
    Par rapace dans le forum Access
    Réponses: 4
    Dernier message: 30/11/2005, 16h20
  5. Sortir d'un while par l'appui d'une touche ?
    Par voxel dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 18/08/2004, 09h44

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