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 :

fichier C++


Sujet :

C++

  1. #1
    Inactif  

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 534
    Par défaut fichier C++
    Bonsoir,
    Je ne parviens pas à CREER ET OUVRIR EN LECTURE ECRITURE un fichier avec fstream. Je me vois dans l' obligation de créer d' abord le fichier, le fermer, puis de le réouvrir en mode lecture écriture.

    Existe-t-il une méthode plus directe en C++ avec les "fstream" ?

    Dans la foulée , avec g++ et Linux que signifie "std::_Ios_Openmode" ?
    Une redéclaration peut-être mais de quoi ? Sinon ?

    Pour conclure, pour accéder à un "handle" de "fstream", la méthode suivante livrée par certains auteurs de logiciels ne fonctionne plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fstream g_hd ;
    // ouvrir au minimum
    int       gethandle() { return g_hd.rdbuf()->fd() ; }
    Ca coince.

    Cordialement.

    Balises [Code] rajoutées par Ricky81
    Pensez y ...

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut Re: fichier C++
    Citation Envoyé par dj.motte
    Bonsoir,
    Je ne parviens pas à CREER ET OUVRIR EN LECTURE ECRITURE un fichier avec fstream. Je me vois dans l' obligation de créer d' abord le fichier, le fermer, puis de le réouvrir en mode lecture écriture.
    Je n'ai jamais utilisé des flux en lecture/écriture, donc je ne peux pas parler d'expérience. Par contre, ma lecture de la norme semble indiquer que si tu ouvres en lecture/écritue avec en plus le flag ios_base::trunc, ça pourrait marcher.

    Citation Envoyé par dj.motte
    Pour conclure, pour accéder à un "handle" de "fstream", la méthode suivante livrée par certains auteurs de logiciels ne fonctionne plus.
    A ma connaissance, cette méthode n'a jamais fait partie du C++, c'est une extention. De plus, à moins que l'on ne décide de baser l'implémentation des flux C++ sur celle des flux C (ce qui n'a rien d'obligatoire, et est probablement néfaste dans certains cas), implémenter une telle méthode pose des tas de problèmes (synchronisation entre les deux représentations...).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    HRS
    HRS est déconnecté
    Membre chevronné
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    678
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 678
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include <fstream>
    using namespace std;
    int main () {
       ofstream titi;
       titi.open ("titi.fic",ios::out);
       titi << "toto";
       titi.close();
       return 0;
    }

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 534
    Par défaut
    Bonsoir,

    HRS vous dîtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include <fstream> 
     using namespace std; 
     int main () { 
        ofstream titi; 
        titi.open ("titi.fic",ios::out); 
        titi << "toto"; 
        titi.close(); 
        return 0; 
     }
    Je ne suis pa sûr que l' on puisse lire dans le fichier "titi" une fois ouvert avec seulement "ios::out".

    Or mon but était de créer en lecture-écriture un "fstream".
    Si cela est possible !

    Cordialement.

  5. #5
    HRS
    HRS est déconnecté
    Membre chevronné
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    678
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 678
    Par défaut
    je n'avais pas vu LECTURE ECRIRE

    le programme suivant ouvre un fichier en lecture/ecriture

    écriture de 5 enregistrements puis lecture directe du 3ème enregistrement

    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
    23
    24
    25
     
    #include <fstream>
    #include <iostream>
       using namespace std;
       struct PC{ 
          char NomPoste[30] ;
       }pc ; 
     
       int main () {
          char * lib[5] = { "toto1", "bibi", "keke", "baba", "ruru"};
          int lg = sizeof (PC);
          int i ; 
          ifstream Fichier("c:/AliasPC2.txt", ios::binary | ios::in | ios::out) ;
          ostream oFichier (Fichier.rdbuf());
          for(i=0; i<5; i++) {
             strcpy (pc.NomPoste,lib[i]); 
             oFichier.write((char *)(&pc), lg) ;
         }
          Fichier.seekg (2 *  lg);
          Fichier.read((char *)(&pc), lg) ;
          cout << pc.NomPoste << endl;    
          Fichier.close() ;
          cin.ignore();
          return 0; 
       }

Discussions similaires

  1. fichier mappé en mémoire
    Par WinBernardo dans le forum Delphi
    Réponses: 7
    Dernier message: 01/12/2006, 09h38
  2. Réponses: 5
    Dernier message: 20/08/2002, 18h01
  3. Lire 1 bit d'un fichier en C
    Par Anonymous dans le forum C
    Réponses: 3
    Dernier message: 23/05/2002, 18h31
  4. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37
  5. Fichier PDOXUSRS.NET
    Par yannick dans le forum Paradox
    Réponses: 5
    Dernier message: 05/04/2002, 09h45

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