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

Visual C++ Discussion :

fstream => bug avec Visual c++ 2005 Express Edition ?


Sujet :

Visual C++

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Par défaut fstream => bug avec Visual c++ 2005 Express Edition ?
    Bonjour,

    j'utilise:
    - Windows XP SP2
    - Visual c++ 2005 Express Edition SP1

    Mon programme fonctionne parfaitement quand j'utilise: g++ 3.4.4.
    (Autant sous linux que sous windows)

    Le programme parcours le fichier et annalyse le texte.
    J'ai commencé avec une lecture caractère par caractère et je constate que de temps à autre, j'ai besoin de lire des lignes.
    ça ne pose pas de problème sur de très petit fichier ( < 4'096 caractères)

    Maintenant que mon parser est quasi fini, je constate que j'ai un soucis de temps en temps au moment où je dois revenir en arrière sur des fichiers plus grand que 4'096 caractères.


    Ce qui se passe:
    avec le debugger, j'ai pu constater que le fichier est parcourus par bloque de 4'096 caractères.
    Le programme dépasse se bloque de 4'096 en appelant la fonction get() ou getline().
    Ensuite le bug survient au moment où le programme doit revenir sur ces pas. J'utilise unget() plusieurs fois dans une boucle for (En raison d'un autre bug, voir rem ci-dessous).
    A ce moment le pointeur doit se perdre car je n'arrive plus à lire de caractères.


    A) Donc est-ce que c'est possible de modifier le nombre de caractères chargé ?
    (J'ai observé avec le debugger en me plaçant sur pointeur de type fstream puis j'ai parcourus les éléments suivants /+ _Filebuffer /+ _Myfile /+ _bufsize = 4096

    B) Est-ce qu'il est possible d'indiquer lorsque l'on ouvre le fichier qu'il soit totallement chargé en mémoire ? (fichier toujours plus petit que 10Mo)

    C) Est-ce qu'il y a qqch à modifier ou indiquer sous Visual C++ pour utiliser correctement la classe fstream ?


    REM:
    Ouvrir le fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	string thefile = "nom du fichier";
    	fstream * pOpenedFile;
    	pOpenedFile = new fstream(thefile.c_str());
    lire un caractère:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	char readChar;
    	pOpenedFile->get(readChar);
    lire une ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	string strLine;
    	getline(*pOpenedFile,strLine);
    retour en arrière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	for(unsigned int i=0; i <= (strLine.length() - found ); i++)
    	{
    		pOpenedFile->unget();
    	}

    Si j'utilise pas les fonctions tellg() et seekg() c'est que les pointeurs retourné n'ont aucun sens lors que les fins de lignes sont signalées par Line Feed ( 0x0A ou '\n' )
    (Un autre bug sous Visual C++ 2005 enfin, j'en suis pas certain.)

    Et comme je souhaite pouvoir annalyser des fichiers texte au format UNIX ou Dos, je ne me limite pas au fin de ligne: Carriage Return et Line Feed ( 0x0D 0x0A ou "\r\n" ) donc, je n'ai pas utilisé ces 2 fonctions (tellg et seekg).

    Voir: http://forums.microsoft.com/MSDN/Sho...08912&SiteID=1
    (Message concernant ce problème.)

    PS:
    Si vous avez des conseilles pour annalyser (parser) un fichier texte, je suis preneur. Mais, je ne pense pas pouvoir les mettre tout de suite en pratique car je souhaite éviter de devoir réécrire la moitié de mon code pour les mettre en pratique.


    PS2:
    S'il vous manque des infos, n'hésitez pas à me l'indiquer.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. service windows avec Visual Basic 2005 Express
    Par horzy dans le forum VB.NET
    Réponses: 1
    Dernier message: 29/05/2007, 22h58
  2. Compilation avec Visual C++ 2005 Express pour avoir un module python
    Par Freyja dans le forum Déploiement/Installation
    Réponses: 6
    Dernier message: 13/07/2006, 12h12
  3. [Débutant] Linker avec Visual C++ 2005 Express
    Par EL0807 dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 03/04/2006, 16h24
  4. DLL avec Visual C++ 2005 Express
    Par Jloox dans le forum MFC
    Réponses: 5
    Dernier message: 09/03/2006, 18h24

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