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 :

Portée de variables et while


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Points : 59
    Points
    59
    Par défaut Portée de variables et while
    Bonjour,

    en faisant un peu de programmation en C++ j'ai rencontré un étrange problème, désolé pour le manque de clarté car j'ai vraiment du mal à comprendre son origine.


    J'ai un code qui cherche des données dans un fichier texte pour ensuite les traiter. Le texte récupéré est découpé en sections stockées dans un array, j'utilise un while pour cela.

    Le problème est que l'array est totalement vide une fois que le while s'arrête...si je fais un cout à l'intérieur du while, les données sont affichées correctement. Par contre, dès que je le mets en dehors(après que la boucle s'arrête donc), plus rien.

    Par ailleurs, la compilation se déroule sans erreurs mais ensuite dans la console il y a un message "This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information." Mais je ne sais pas si c'est causé par cette partie du code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int pos; 
         int i = 0;
         std::string possibilities[10]; /
     
         while(pos=scenario_data.rfind(";")){ //Tant qu'on trouve des ";" dans le fichier sauf le tout premier
                                           possibilities[i] = scenario_data.substr(pos); 
                                           possibilities[i].erase(0,1); //Virer le ;
                                           scenario_data.erase(pos);
                                           i++; 
                                           }

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 064
    Points
    219 064
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Oui cela semble étrange.

    Pouvez vous ajouter votre code d'affiche, celui que vous utilisez lorsque vous affichiez dans la boucle, et celui lorsque vous affichiez à l'extérieur...
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    A ton avis, que retourne std::string::rfind ? Surtout lorsque la recherche échoue ?
    Autre chose, que se passe-t-il si i atteint et dépasse 10 ?
    La réponse : et bien le plantage que tu as

    => change ton while pour comparer le retour de std::string::rfind à std::string::npos.
    => utilise std::vector<std::string> à la place de ton tableau en dur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        int pos;
        int i = 0;
        std::vector<std::string> possibilities;
     
        while((pos=scenario_data.rfind(";"))!=std::string::npos){ //Tant qu'on trouve des ";" dans le fichier sauf le tout premier
            possibilities.push_back(scenario_data.substr(pos+1));
            scenario_data.erase(pos);
            ++i;
        }

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Points : 59
    Points
    59
    Par défaut
    C'était ça en effet! Problème résolu...et je prend note pour vector, bien plus pratique qu'un tableau en effet.Merci beaucoup!

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

Discussions similaires

  1. Portée d une variable (boucle while)
    Par racoboss dans le forum Langage
    Réponses: 4
    Dernier message: 11/12/2007, 09h37
  2. Portée des variables vbscript vers ASP
    Par Immobilis dans le forum ASP
    Réponses: 3
    Dernier message: 03/11/2004, 10h14
  3. [XSL]Problème de portée des variables
    Par djulesp dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/09/2004, 10h34
  4. [Portée] portée des variables
    Par parksto dans le forum Langage
    Réponses: 7
    Dernier message: 09/05/2004, 21h05
  5. [FLASH MX 2004][XML]portée de variable
    Par marco_ dans le forum Flash
    Réponses: 8
    Dernier message: 29/04/2004, 15h47

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