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 :

Souci avec une recherche de chaîne de caractère [Débutant(e)]


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Souci avec une recherche de chaîne de caractère
    Bonjour,

    J'ai un petit problème dans mon programme. Ca se passe au niveau d'une recherche de chaîne de caractère dans un ligne. Cette ligne viens d'en fichier .csv. Le problème est au niveau de la ligne en rouge.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int pointeura, pointeurb;//entier donnant la place de la chaîne dans la ligne.
    string saveLine1="";//Sauvegarde de la ligne récupérée (de .csv).
    string strrequete="";//="RDBLID" pour l'exemple.
    char chreqlid[2];//="FE" pour l'exemple.
    
    pointeura=saveLine1.find(strrequete);
    pointeurb=saveLine1.find(chreqlid);
    La ligne récupérée est la suivante :"AAS;RDBILIDGENE;21;FE;Zone d'identification".
    Mon problème est que le pointeura prend bien la valeur 4, mais pour le pointeurb... Il reste à -1, alors que "FE" est dans la ligne!! Donc je ne comprend pas tout...
    Est ce que ça vous est déjà arrivé? Est-ce que vous pouvez m'aider?

    Je précise que je n'ai pas une formation de développeur. Et je suis sur C++ Builder 6.

    J'ai essayé de mettre le chreqlid dans un string, mais le string devient "FEl", il me rajoute un caractère... Je fais peut-être mal la conversion, enfin si vous pouviez m'éclairer là dessus aussi.

    Voilà vous savez tout
    Merci d'avance!

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Une chaîne C valide terminer toujours par un \0. Ici tu n'en as pas pour chreqlid, donc ça va faire n'importe quoi.

  3. #3
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 861
    Points
    11 861
    Par défaut
    Pourquoi utiliser un char[2] pour ta deuxième chaîne à chercher, et une std::string pour la première ?

    http://cppreference.com/cppstring/find.html
    Tu peux aussi chercher une string, comme tu le fais pour la première chaine.
    Et comme ça, tu n'as pas de problème de \0 terminal.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Une chaîne C valide terminer toujours par un \0. Ici tu n'en as pas pour chreqlid, donc ça va faire n'importe quoi.
    Tu veux dire qu'il faut que je rajoute '\0' à chaque fois que j'affecte mon chreqlid? Du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    char chreqlid[3];
    for(;i!=2;i++)
    chreqlid='T';//'T' pour l'exemple
     
    chreqlid[2]='\0';
    [Edit]Ca ne doit pas être ça que tu voulais dire, parce que je viens d'éssayer... Et ça ne marche pas... Je précise que je me suis formé avec le livre "programmer en C++" de Claude DELANNOY, et dans les exemples, il ne parlait pas du caractère '\0', c'est pour ça que je ne le connais pas (J'ai peut-être pas bien lu non plus)

    Pourquoi utiliser un char[2] pour ta deuxième chaîne à chercher, et une std::string pour la première ?
    Pour la première j'utilise une string parce qu'il y a peu de variables de type "RDBLID", j'affecte donc strrequete avec le type de variable voulu, soit "RDBLID", soit "IOCBLID", ....
    Pour la seconde, j'utilise un char[2], car je récupère les informations depuis un fichier texte, cette information s'appelle le LID et se trouve après la requête de type "RDBLID". Je n'ai pas trouvé d'autre manière pour récupérer le LID que d'utiliser un "find_first_of" comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iv=find_first_of(v2.begin()+10, v2.end(), V1A.begin(), v1A.end())
    Avec v2 étant une ligne converti en vecteur d'où j'extrait mon chreqlid (utilisé par la suite) et v1A étant un vecteur contenant : 1,2,.....,0 et A, B, ....., Z. Le +10 vient du fait que le LID que je cherche se trouve 10 caractères après le début de la ligne (je pense que vous aviez compris )
    Je crois (mais je ne suis pas sur) qu'il n'est pas possible d'utiliser une string pour ce genre de fonction.

    Merci pour vos réponses et pour le lien!

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

Discussions similaires

  1. [vb6] Soucis avec une instance excel
    Par Little-Freud dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 24/04/2006, 17h08
  2. [WD9] [Débutant] Souci avec une simple requête
    Par unix27 dans le forum WinDev
    Réponses: 4
    Dernier message: 04/04/2006, 01h54
  3. souci avec une comparaison de date
    Par Ludo75 dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 20/02/2006, 16h59
  4. [MySQL] Soucis avec une insertion dans une base
    Par Ludo75 dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 27/01/2006, 15h03
  5. SOucis avec une reequete imbriquee
    Par Ni4k dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/03/2004, 09h56

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