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 :

Copies de flots en passant par les itérateurs [Infos]


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 31
    Points : 29
    Points
    29
    Par défaut [RESOLU] Copies de flots en passant par les itérateurs
    Messieurs dames, je vous salue bien bas.

    - Le contexte : faire une copie d'un fichier texte en utilisant les itérateurs associés aux flots (istream_iterator etc...)
    NB : j'ai bien concience qu'il existe d'autres moyens de dupliquer un fichier, mais c'est cette manipulation précise qui m'intéresse ici.

    - Le code à l'essai :
    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
     
    #include <iostream>
    #include <algorithm>
    using namespace std;
      ...
      ...
      ifstream ifstr&#40; "aaa.txt", ios&#58;&#58;binary | ios&#58;&#58;in &#41;;
      ofstream ofstr&#40; "aaa_copy.txt", ios&#58;&#58;binary | ios&#58;&#58;out &#41;;
     
      istream_iterator< char, char > begin&#40; ifstr &#41;;
      istream_iterator< char, char > end;
      ostream_iterator< char, char > out&#40; ofstr &#41;;
      copy&#40; begin, end, out &#41;;
      ...
      ...
    - Résultat attendu : deux fichiers de taille et de contenu identique

    - Résultat obtenu : aaa_copy.txt est plus petit que son modèle. Tous les sauts de ligne ont disparu.

    - Question1 : : Pourquoi donc :
    - Question2 : : Comment faire :

    Dans l'attente d'une réponse éclairée et argumentée de votre part, je vous prie de recevoir, mesdames et messieurs, mes rtès caniculaires salutations.

    Votre serviteur,
    C.B.
    Oups...
    -

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 28
    Points : 32
    Points
    32
    Par défaut
    ça vient peut-être du mode binaire avec lequel tu ouvre tes fichiers.

    il y a un mode ou une fin de lighne se code par \n
    et l'autre par \r\n ou \n\r je ne sais plus

    Essaye en supprimant le flag ios::binary
    Fëanor13 alias Marmotte
    "An eye for an eye makes the whole world blind." - Gandhi -
    Je suis une quiche en Anglais, alors merci de ne pas me renvoyer sur des sites anglophones...
    Merci

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 31
    Points : 29
    Points
    29
    Par défaut
    En fait, cela ne change rien... J'ai commencé par ouvrir mes flots en mode texte, mais constatant le problème, j'avais en effet soupçonné un pépin lié à '\n' en mode formatté (typiquement, l'operator >> a un peu de mal avec ces caractères de contrôle...). D'où mon essai en mode binaire, mais en vain...
    Oups...
    -

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Points : 325
    Points
    325
    Par défaut
    Quelques-fois j'aime bien repondre par un flot que questions !

    1- Quel OS (Windows je présume !) ?
    2- Les saut de lignes ont disparus, mais y a-t-il un carre noir ou quelque chose à la place ?
    3- tu as essayé avec le binary sur les deux fichiers, puis sur aucun, mais as tu essayé avec le binary sur le fichier lu et non sur le fichier ecrit ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 31
    Points : 29
    Points
    29
    Par défaut
    1 - Heu... oui... (et je dirai même pire : XP !)
    2 - Non. Toutes les lignes sont concaténées en sortie, sans caractères parasites
    3 - Yep ! J'ai testé les 4 combinaisons possibles, qui donnent toutes le même résultat...

    J'ai également essayé en modifiant mes doses de whisky. Pareil...
    Oups...
    -

  6. #6
    Membre régulier

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 68
    Points : 93
    Points
    93
    Par défaut
    Bonjour,

    Je crois qu'il faut ajouter la ligne suivante apres la creation de ifstr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ifstr.unsetf&#40;ios_base&#58;&#58; skipws&#41;;
    Cordialement

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 31
    Points : 29
    Points
    29
    Par défaut
    Ouaip ! Bien joué !
    Et en prime, avec cette correction sur les flags, il n'est même pas indispensable de traiter les fichiers en mode binaire.

    Je suis ému...

    Oups...
    -

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Points : 325
    Points
    325
    Par défaut
    Tu vas donc pouvoir remmettre les doses de Whisky à la normale !

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

Discussions similaires

  1. [Spip] afficher les articles d'une sous sous rubrique en passant par les rubriques parents
    Par Abou Zar dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 06/08/2012, 18h50
  2. [WS 2008 R2] Affichage lecteur réseau en passant par les GPOs
    Par yann47550 dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 21/10/2011, 13h20
  3. Réponses: 0
    Dernier message: 23/06/2010, 11h35
  4. Bouger une fenêtre en passant par les processus (sans FindWindow)
    Par ero-sennin dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 06/06/2009, 00h05
  5. Rendre invisible les valeurs passant par l'URL
    Par Jones dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 09/11/2004, 12h50

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