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 :

fichier et chaîne de caractères


Sujet :

Langage C++

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Points : 41
    Points
    41
    Par défaut fichier et chaîne de caractères
    Bonjour,
    J’ai créé un fichier contenant des chaînes de caractères, lorsque j’effectue une recherche et que la chaîne contient une lettre accentuée la recherche n’abouti pas. Comment faire ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    LA Règle : ne jamais utiliser de lettres accentuées dans la nomination de tes fichiers et dossiers.
    Je vais quand même regarder ce que tu peux faire techniquement pour traiter les accents. Je te tiens au courant.

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Points : 41
    Points
    41
    Par défaut
    J’y avais pensé, le problème est que les chaînes sont des noms de ville les accents sont important, les enlever ne m’arrange pas vraiment, mais merci du tuyau.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    A part traiter tous les cas d'accents possibles je ne vois pas.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Ah oui au fait j'ai oublié de te dire pourquoi ta recherche n'aboutit pas!
    En fait, tes accents sont "codés" dans ta chaîne de caractère (par exemple avec un truc du style \201).
    Le problème c'est qu'il existe plusieurs formats de stockage qui diffèrent selon les machines et les systèmes d'exploitation.
    Si tu veux voir ce que tu obtiens, fais un point d'arrêt juste après avoir stocké ta chaîne de caractère dans ta variable et regarde ce que contient ta variable.
    D'ailleurs, ça serait bien si tu pouvais nous dire ce que tu obtiens pour qu'on sache dans quel format tu te trouves.
    Si tu n'envisages pas de portabilité de ton code, il sera toujours possible de traiter le cas particulier de ta machine.

  6. #6
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 218
    Points
    1 218
    Par défaut
    Je pense qu'il y a beaucoup plus simple: les lettre accentuées étant toutes contenues dans un UTF16 (supplément latin 1), il te suffit alors de lire ton fichier à coups de wstring ce qui te permettra alors d'identifier les accent. Ensuite, je pense qu'il faut faire une petite fonction du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string sansaccents(const wstring &);
    et d'appeler cette fonction sur les chaines à comparer à chaque fois que tu en a besoin. L'autre solution (pour éviter la copie) étant de faire un find sur les lettre accentuée et de modifier ta chaine ou une copie unique de ta chaine dans le programme.

    Bonne chance

  7. #7
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Tiens j'ai encore appris un truc aujourd'hui. ^^

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Points : 41
    Points
    41
    Par défaut
    Merci pour vos aides, moi aussi j'ai encore appris quelque chose.

  9. #9
    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 : 46
    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 méphistopheles Voir le message
    Je pense qu'il y a beaucoup plus simple: les lettre accentuées étant toutes contenues dans un UTF16
    Encore faut-il que le fichier soit bien en UTF16.

  10. #10
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 218
    Points
    1 218
    Par défaut
    Citation Envoyé par gl Voir le message
    Encore faut-il que le fichier soit bien en UTF16.
    c'est en général ce qu'il y a de plus courant sur les systèmes windows( je crois). En suite, je n'ai par contre aucune idée sur la façon de connaître le format d'encodage d'un fichier (probablement par entête, mais pas sûr...)

  11. #11
    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 : 46
    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 méphistopheles Voir le message
    c'est en général ce qu'il y a de plus courant sur les systèmes windows( je crois).
    L'encodage de base de windows est dépendant de la localisation de windows. En occident c'est plutôt CP1252 ou latin1 me semble-t-il.

    Le format des fichiers produits par différents utilitaires dépends de l'utilitaire.

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

Discussions similaires

  1. [Batch] Déplacer des fichiers si chaîne de caractères trouvée
    Par kooky dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 18/10/2011, 10h27
  2. Réponses: 4
    Dernier message: 04/03/2007, 14h26
  3. Réponses: 8
    Dernier message: 16/06/2006, 02h06
  4. Rechercher une chaîne de caractère dans une série de fichier
    Par Edoxituz dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/02/2006, 13h51

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