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 :

Lecture de fichier windows et Unix (CR/LF)


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par défaut Lecture de fichier windows et Unix (CR/LF)
    Bonjour,

    Je suis en train de m'énerver sur une méthode qui lit tout simplement des fichiers textes ligne par ligne.
    Je gère actuellement l'encodage ANSI, UTF8, etc...

    Par contre, je viens de réaliser que selon le type de fichier windows/Unix (CR/LF ou LF) je ne sais pas lire les données....
    Aucun soucis pour Unix, mais pas moyen de lire le windows (CR/LF).

    J'utilise std::getline pour le moment, mais j'arrive tout de suite sur EOF dès la 1ere ligne...
    Idem pour istream::getline ...

    Auriez vous une idée d'une méthode de lecture de fichier qu'il soit windows ou linux, quitte à faire un if avec 2 méthodes... (a condition de savoir distinguer les types...) ?

    Merci beaucoup.

  2. #2
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Tu tests la condition de sortie sur eof?

  3. #3
    Membre émérite
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par défaut
    En fait, je prend un ifstream pour ouvrir mon fichier.

    je test le eof() => false
    je fait std::getline(...)
    je test le eof() => true

    le fichier est bien lu, depuis le debogeur de VS je vois même le début du contenu dans les champs du istream...

  4. #4
    Membre chevronné Avatar de Lavock
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 560
    Par défaut
    As tu pensais a widen(char) ?

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    En C++, pour lire un fichier ligne par ligne, c'est juste:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    std::ifstream file( "fichier" );
     
    if( file )
    {
        std::string line;
        while( std::getline( file, line  ) )
        {
     
        }
    }
    Sous linux par exemple ce code va gérer l'UTF-8 basique tout seul à l'affichage.

    Pour lire un fichier windows ( si tu es sous Linux ), il faut pas juste rajouter un paramètre à getline qui indique quel est le caractère de fin?

    http://www.cplusplus.com/reference/string/getline/
    istream& getline ( istream& is, string& str, char delim );
    istream& getline ( istream& is, string& str );

    c'est pas ça que tu recherches en fait?


    Le truc de getline, c'est qu'il n'a pas le même fonctionnement sous Linux ou sous Windows. Il prendra le format de fichier du système sur lequel il est compilé

  6. #6
    Membre émérite
    Avatar de Ange_blond
    Homme Profil pro
    Ingénieur développement en 3D temps réel
    Inscrit en
    Mars 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement en 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par défaut
    Citation Envoyé par nikko34 Voir le message

    Pour lire un fichier windows ( si tu es sous Linux ), il faut pas juste rajouter un paramètre à getline qui indique quel est le caractère de fin?


    c'est pas ça que tu recherches en fait?

    Possible, mais dans ce cas quels sont les carateres de fin sous windows et Unix ? '\n' ?

    Merci.

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

Discussions similaires

  1. [Windows]lecture des fichier lnk (raccourcis)
    Par Tiaps dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 21/10/2009, 19h27
  2. Manipuler des fichiers de type Unix sous Windows
    Par hermes1983 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 06/06/2009, 08h43
  3. fichier de boot unix écrasé par window
    Par lailalachir dans le forum Administration système
    Réponses: 3
    Dernier message: 03/01/2008, 10h23
  4. Lecture de fichiers crees sous Unix en VB6
    Par bzh_touch dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/03/2007, 17h46
  5. Réponses: 1
    Dernier message: 21/12/2006, 13h06

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