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 :

Convertir cFileName en string


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 133
    Par défaut Convertir cFileName en string
    Salut à tous,

    J'aimerai récupérer dans une chaine de caractère (pour pouvoir ensuite la manipuler) les données contenues dans le cFileName.

    De ce que j'ai pu comprendre cFileName est un CHAR * mais cette information ne m'a pas plus aidé (je n'arrive pas à appliquer la conversion proposée dans le FAQ C++).

    Voici actuellement mon code mais qui ne marche pas :/

    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
    26
    27
    28
    29
    30
    #include <stdio.h>
    #include <string.h>
    #include <sstream>
    #include <windows.h>
     
    int main (int argc, char *argv[])
        {
            int dateinput;
            char datefound;
     
            WIN32_FIND_DATA File;
            HANDLE hSearch;
     
            hSearch = FindFirstFile("D:\\*.*", &File);
            if (hSearch != INVALID_HANDLE_VALUE);
            {
                do
                {
                    stringstream ss;
                    ss << cFileName;
                    string str;
                    ss >> str;
                    datefound = cFileName;
                    printf("%s\n", &datefound);
                }
            while (FindNextFile(hSearch, &File));
            FindClose(hSearch);
            }
        return 0;
        }

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Salut

    Tu confonds C et C++. Ton code est du C++.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Par défaut
    Ouch, commence par un cours sur les bases de C et notamment les chaines de caractères.

    Dans code le printf devrait être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf("%s\n", cFileName);

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 133
    Par défaut
    Citation Envoyé par Joker-eph Voir le message
    Dans code le printf devrait être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf("%s\n", cFileName);
    En fait c'est juste un affichage test car après je veux après manipuler cette chaine.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 133
    Par défaut
    Je suis arrivé à mettre File.cFileName dans datefound grâce à ce petit code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char datefound[10];
    ...
    strcpy(datefound, File.cFileName);
    mais voilà quand je pointe sur datefound (je suis sous code block) il me dis que datefound est un CString et un char et j'ai l'impression que c'est à cause de ça que je ne peux pas ensuite manipuler ma chaine.

    Qu'en pensez vous?

  6. #6
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par Kermichou Voir le message
    Je suis arrivé à mettre File.cFileName dans datefound grâce à ce petit code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char datefound[10];
    ...
    strcpy(datefound, File.cFileName);
    mais voilà quand je pointe sur datefound (je suis sous code block) il me dis que datefound est un CString et un char et j'ai l'impression que c'est à cause de ça que je ne peux pas ensuite manipuler ma chaine.

    Qu'en pensez vous?
    Tu es en C++. Tu devrais t'intéresser aux chaines ce caractère proposées par le standard C++ et accessible facilement.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 133
    Par défaut
    En effet, j'utilisais cette méthode avant mais je ne suis pas arrivé à convertir File.cFileName qui est un char * en string et ceux même en appliquant la méthode décrite par le FAQ

  8. #8
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par Kermichou Voir le message
    En effet, j'utilisais cette méthode avant mais je ne suis pas arrivé à convertir File.cFileName qui est un char * en string et ceux même en appliquant la méthode décrite par le FAQ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    std::string cfn = std::string(File.cFileName);
    // ou, moins lisible mais plus court à écrire et strictement équivalent:
    std::string cfn(File.cFileName);
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 133
    Par défaut
    En forçant File.cFileName en string il me plante l'invite de commande (enfin je pense que ça vient de là).

    Voici le nouveau code, bien sûr l'objectif n'est pas d'afficher le contenu de File.cFileName mais de pouvoir ensuite le modifier:

    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
    26
    #include <stdio.h>
    #include <string>
    #include <cstring>
    #include <windows.h>
     
    int main ()
        {
            std::string datefound;
     
            WIN32_FIND_DATA File;
            HANDLE hSearch;
            std::string(File.cFileName);
     
            hSearch = FindFirstFile("D:\\*.*", &File);
            if (hSearch != INVALID_HANDLE_VALUE);
            {
                do
                {
                    datefound = File.cFileName;
                    printf("%s\n", datefound);
                }
            while (FindNextFile(hSearch, &File));
            FindClose(hSearch);
            }
        return 0;
        }
    Dans build message il me met : main.cpp|26|warning: cannot pass objects of non-POD type 'struct std::string' through '...'; call will abort at runtime|

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 133
    Par défaut
    Je viens de rajouter un & devant datefound et cmd ne plante plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%s\n", &datefound);
    mais il n'affiche pas le bon résultat...

    ∟►>
    ♦►>
    ∟►>
    ∟►>
    ∟►>

    Process returned 0 (0x0) execution time : 0.178 s
    Press any key to continue.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 133
    Par défaut
    car il ne faut pas utiliser printf mais count, enfin je crois je vais chercher

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 133
    Par défaut
    J'y suis arrivé !!!!!!!!!!!!!!!!!!! Merci à tous pour vos aides

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

Discussions similaires

  1. Convertir un std::string en double.
    Par vdumont dans le forum SL & STL
    Réponses: 16
    Dernier message: 10/05/2006, 16h46
  2. Réponses: 12
    Dernier message: 31/01/2006, 21h46
  3. [VBScript] Convertir date en string
    Par rabi dans le forum VBScript
    Réponses: 4
    Dernier message: 26/12/2005, 11h26
  4. [jar] convertir URL en String
    Par c-top dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 22/11/2004, 11h19
  5. Réponses: 6
    Dernier message: 14/02/2004, 14h01

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