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 :

lecture sur disque


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Février 2011
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 188
    Par défaut lecture sur disque
    Bonjour,

    C'est quoi une opération de lecture sur disque et comment je peux lancer un exemple d'une opération de lecture en utilisant C++?

    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Hello,

    Bah c'est une lecture sur disque... Comme un accès à un fichier.

    Regarde du coté de std::fstream

    Petit exemple rapide
    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
    //exemple.txt
    1 4.2 blah
     
    // main.cpp
    #include <fstream>
    #include <string>
    #include <cmath>
     
    int main() {
       int i;
       double d;
       std::string str;
     
       std::ifstream is("exemple.txt");
       is >> i >> d >> str;
       assert(i == 1);
       assert(std::abs(d - 4.2) < 1e-5);
       assert(str == "blah");
       return 0;
    }

  3. #3
    Membre très actif
    Inscrit en
    Février 2011
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 188
    Par défaut
    Merci pour votre réponse

    Si je veux mesurer le temps consacré par le système pour réaliser une lecture, est ce que ce code est juste ? Ou je dois déplacer les instructions mesurant ce temps ?

    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
     
    int main() 
    {
    	double temps;
    clock_t start;
    start = clock();
    ifstream fichier("exemple.txt"); 
        char caractere; 
        while(fichier.get(caractere))
    	temps = (double)(clock()-start)/(double)CLOCKS_PER_SEC;
     
        fichier.close();                     
     
    					cout<<temps<<endl;
     
     
    	system("PAUSE");
        return 0;
    }

  4. #4
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    La lecture octet par octet ça risque d'être lent.
    Sinon, il faut prendre le temps après la lecture, et pas à chaque itération (";" manquant ?).

  5. #5
    Membre très actif
    Inscrit en
    Février 2011
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 188
    Par défaut
    Citation Envoyé par Iradrille Voir le message
    Sinon, il faut prendre le temps après la lecture, et pas à chaque itération.
    C'est-à-dire le code devient :

    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
     
    int main() 
    {
    	double temps;
    clock_t start;
    start = clock();
    ifstream fichier("exemple.txt"); 
        char caractere; 
        while(fichier.get(caractere)) 
        fichier.close();                     
        temps = (double)(clock()-start)/(double)CLOCKS_PER_SEC;
        cout<<temps<<endl;
     
    	system("PAUSE");
        return 0;
    }
    Les résultats affichés changent d'une exécution à une autre (0.012 s, 0s...) et plusieurs fois me donne 0 seconde. Je veux un temps exacte pour une opération de lecture sur disque y'a t'il une autre manière pour avoir cette information?

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Etant donné qu'au premier caractère lu tu refermes ton fichier, le résultat n'est pas surprenant.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. Problème lecture sur disque
    Par papao dans le forum Administration
    Réponses: 4
    Dernier message: 04/09/2012, 11h35
  2. Réponses: 0
    Dernier message: 30/12/2011, 14h33
  3. pb de lecture de fichier sur disque
    Par tom31 dans le forum C
    Réponses: 1
    Dernier message: 16/03/2008, 10h08
  4. [Strategie] Lecture depuis le réseau et écriture sur disque dur
    Par Amine_sas dans le forum Général Java
    Réponses: 2
    Dernier message: 18/11/2007, 14h23
  5. [W2003S] lecture seule sur disque reseau
    Par corwin44 dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 15/08/2007, 15h49

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