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 :

Problème avec un ifstream et un nom de fichier avec espace


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 84
    Points : 46
    Points
    46
    Par défaut Problème avec un ifstream et un nom de fichier avec espace
    Bonjour à tous,

    J'ai un programme qui me permet d'envoyer des fichiers par HTTP. Pour cela, je lisais le contenu des fichiers en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ifstream file (filename, ios::in|ios::binary|ios::ate);
    size = file.tellg();
    file.seekg (0, ios::beg);
    char * bufferToSend =  new char[size];
    file.read (bufferToSend, size );
    //Envoi du buffer par http
    puis j'envoyais ce buffer en plusieurs fois.
    C'était assez crade parce que ca chargait tout en mémoire et j'avais des erreurs sur les gros fichiers.

    Du coup j'ai modifié mon code avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ifstream file (filename, ios::in|ios::binary|ios::ate);
    size = file.tellg();
    file.seekg (0, ios::beg);
    for (int i = 0 ; i < size; i +=4096)
    {
        //G simplifié mais en gros c ca
        char * bufferToSend =  new char[4096];
        file.read (bufferToSend, 4096);
        //Envoi du buffer par http
    }
    Donc je reçois bien mes fichiers mais g un GROOOOS problème lorsque le fichier que j'envoie contient un espace. Le fichier recu fait la meme taille mais le contenu est completement différent.
    Y aurait-il un bug dans la méthode read lorsque les fichiers ont des espaces dans le nom ?

    Merci d'avance pour toutes vos réponses.

  2. #2
    Membre confirmé Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Points : 496
    Points
    496
    Par défaut
    Correction de la fuite de memoire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ifstream file (filename, ios::in|ios::binary|ios::ate);
    size = file.tellg();
    file.seekg (0, ios::beg);
    char * bufferToSend =  new char[4096]; //Allocation
    for (int i = 0 ; i < size; i +=4096)
    {
        file.read (bufferToSend, 4096);
        //Envoi du buffer par http
    }
    delete[] bufferToSend; //Suppresion du buffer
    Document toi sur la lecture d'un fichier avec la STL.

Discussions similaires

  1. Nom de fichier avec des espaces, problème dans un script
    Par laloupiote dans le forum Shell et commandes GNU
    Réponses: 18
    Dernier message: 08/02/2013, 16h56
  2. [DOM] Problème d'accent sur les noms de fichier avec mon parseur
    Par ujoodha dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 06/04/2006, 21h55
  3. Réponses: 7
    Dernier message: 07/01/2006, 15h18
  4. Réponses: 3
    Dernier message: 12/07/2005, 13h33
  5. changement de nom de fichier avec smartupload
    Par bourvil dans le forum ASP
    Réponses: 2
    Dernier message: 24/05/2004, 14h50

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