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

Langage C++ Discussion :

lecture séquence de fichiers


Sujet :

Langage C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut lecture séquence de fichiers
    Salut tout le monde,

    Je souhaite effectuer la lecture d'une séquence d'images pour effectuer certains traitements.
    Pour lire une image j'utilise un "ifstream". mon souci est le suivant : pour pouvoir automatiser la lecture de toute une séquence, je dois trouver le moyen de copier le nom (chaîne de caractère) de la bonne image dans ma séquence pour le passer en paramètre à mon "ifstream". J'ai beau chercher, je n'arrive pas à trouver le moyen de faire cela en C++. J'ai pensé à faire des "strcpy" mais comment aller lire dans le répertoire les noms des fichiers ? (je dois effectuer cela sans utiliser de commandes système pour avoir un prog portable)

    voilà, j'aurais donc besoin de vos conseils.

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Lister le contenu d'un répertoire ne peut se faire sans commandes systèmes. Ce qu'on a de plus portable pour ça, ce sont les APIs POSIX opendir, readdir, closedir. Je n'ai pas bien compris le problème de strcpy, de C++ et de ifstream.

    chaîne C -> std::string :
    std::string str("bla bla bla");

    std::string -> chaîne C
    strcpy(s, str.c_str());

    Où s est un tableau de au moins str.length + 1 caractères.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Melem Voir le message
    Lister le contenu d'un répertoire ne peut se faire sans commandes systèmes. Ce qu'on a de plus portable pour ça, ce sont les APIs POSIX opendir, readdir, closedir. Je n'ai pas bien compris le problème de strcpy, de C++ et de ifstream.

    chaîne C -> std::string :
    std::string str("bla bla bla");

    std::string -> chaîne C
    strcpy(s, str.c_str());

    Où s est un tableau de au moins str.length + 1 caractères.
    Salut,

    merci d'avoir répondu Melem,

    donc pas moyen de se passer des commandes systèmes si j souhaite lire le nom de mes images au sein d'un répertoire, ok.
    admettons que je connaisse le nom de mes images , disons, "img_001.jpeg", "img_002.jpeg", ...jusqu'à "img_jpeg_210" par exemple.
    quels types de commandes puis-je utiliser pour ma boucle de lecture pour avoir, pour le nom de mes images un truc du style : "img_" + un itérateur allant de 0 à 200 ? faire une concaténation avec "img" et un itérateur que je caste en string et puis utiliser la chaîne de caractère obtenue comme le nom de l'image???
    comme ça, une fois

  4. #4
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par didi_di Voir le message
    donc pas moyen de se passer des commandes systèmes si j souhaite lire le nom de mes images au sein d'un répertoire
    Il n'y a rien dans la norme C++ permettant de faire ce que tu veux.

    Il faut donc
    • Soit passer par les API systèmes, éventuellement sous option de compilation pour gérer la portabilité.
    • Soit utiliser une bibliothèque portable sur les différents systèmes cibles qui encapsule les appels systèmes pour toi (par exemple POCO ou boost.filesystem).

  5. #5
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    admettons que je connaisse le nom de mes images , disons, "img_001.jpeg", "img_002.jpeg", ...jusqu'à "img_jpeg_210" par exemple.
    quels types de commandes puis-je utiliser pour ma boucle de lecture pour avoir, pour le nom de mes images un truc du style : "img_" + un itérateur allant de 0 à 200 ? faire une concaténation avec "img" et un itérateur que je caste en string et puis utiliser la chaîne de caractère obtenue comme le nom de l'image??
    Oui. C'est très simple en utilisant la fonction sprintf.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <cstdio>
    ...
    for(int i = 1; i <= 210; i++)
    {
        char s[13];
        std::sprintf(s, "img_jpeg_%03d", i); // %03d : utiliser au moins 3 caractères, compléter les blancs par des 0.
        use_file_c(s);
        use_file_cpp(std::string(s));
    }

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Melem Voir le message
    Oui. C'est très simple en utilisant la fonction sprintf.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <cstdio>
    ...
    for(int i = 1; i <= 210; i++)
    {
        char s[13];
        std::sprintf(s, "img_jpeg_%03d", i); // %03d : utiliser au moins 3 caractères, compléter les blancs par des 0.
        use_file_c(s);
        use_file_cpp(std::string(s));
    }
    Salut,

    question: à quoi servent les "use_file_" ?

  7. #7
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    use_file_c et use_file_cpp sont des fonctions fictives qui sont censées prendre en argument respectivement une chaîne C et une chaîne C++. Elles ont été données juste pour la démo.

Discussions similaires

  1. Lecture d'un fichier .dbf
    Par San Soussy dans le forum Autres SGBD
    Réponses: 8
    Dernier message: 07/07/2004, 16h30
  2. Réponses: 6
    Dernier message: 02/09/2003, 15h12
  3. Lecture et ecriture fichier .ini
    Par despe dans le forum C
    Réponses: 6
    Dernier message: 23/07/2003, 20h40
  4. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 4
    Dernier message: 05/02/2003, 08h54
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24

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