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 :

inclure la classe string


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    57
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 57
    Par d�faut inclure la classe string
    Bonjour � tous,

    je reprends le c++ alors soyez indulgents.

    Je programme une classe utilisant les string. Mon probl�me est qu'ils ne sont pas pris en compte, j'ai l'impression que la classe string n'est pas prise en compte.

    le .h :
    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
    31
    32
    33
    34
    35
    #ifndef __claCvs_H__
    #define __claCvs_H__
     
    #include <string.h>
    #include <iostream.h>
     
    class claCvs
    {
       private:
         std::string cvs_file;      // path + file
         std::string cvs_data;
         int cvs_nb_data;      // nombre de colonnes
         int cvs_id_max;           // le plus grand identifiant
     
       public:
         // ----- constructeurs
         claCvs(std::string file, int nb_data);
         // ----- destructeur
         ~claCvs();
         // ----- remplir l'objet (nb_data ne comprend pas)
         void set(std::string file, int nb_data);
         void set_file(std::string file);
         void set_nb_data(int nb_data);
         // ----- vérifie le nombre de colonnes d'une entrée
         bool verif(std::string chaine, bool avec_cle=true);
         // ----- ajouter/modifier/supprimer une ligne (à l'objet)
         bool add(std::string chaine);
         bool modify(std::string chaine, int cle);
         bool del(int cle);
         // ----- charger toutes les données (= annuler les modifs, ou faire un 1er chargement))
         bool load();
         // ----- sauvegarder les données    
         bool save();
    }
    #endif
    et le .cpp
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    #include "classes/claCvs.h"
     
    #include <string.h>
    #include <iostream.h>
    #include <stdlib.h>
     
    claCvs::claCvs(std::string file, int nb_data)
    {
       // constructeur
       cvs_file = file;
       cvs_nb_data = nb_data;
       cvs_id_max = 1;
    }
     
    claCvs::~claCvs()
    {
       // destructeur
    }
     
    void claCvs::set(std::string file, int nb_data)
    {
       cvs_file = file;
       cvs_nb_data = nb_data;
    }
     
    void claCvs::set_file(std::string file)
    {
       cvs_file = file;
    }
     
    void claCvs::set_nb_data(int nb_data)
    {
       cvs_nb_data = nb_data;
    }
     
    bool claCvs::verif(std::string chaine, bool avec_cle=true)
    {
       int pos = 0;
       int indice = 0;
       if(strlen(chaine)==0)
          return false;
       do
       {
           pos = chaine.find(";");
           indice++;   
       }while(pos!=0);
       if(indice == cvs_nb_data && !avec_cle)
          return true;
       else 
       if(indice == (cvs_nb_data+1) && avec_cle)
          return true;
       else
          return false;
    }
     
    bool claCvs::add(std::string chaine)
    {
       int id = cvs_id_max + 1;
       cvs_id_max++;
       std::string idstring;
       itoa(id,idstring,10);
       chaine = idstring + ";" chaine;
       if(!verif(chaine), true)
          return false;
       *cvs_data = chaine;
       return true;
    }
     
    bool claCvs::modify(std::string chaine, int cle)
    {
       int tmp = 0;
       for(int i=0; i<count(cvs_data); i++)
       {
          pos = cvs_data[i].find(";");
          tmp = (int)cvs_data[i].substr(1,pos);
          if(tmp == cle)
          {
             cvs_data[i] = chaine;
             return true;
          }
       }
       return false;
    }
     
    bool claCvs::del(int cle)
    {
       int tmp = 0;
       for(int i=0; i<count(cvs_data); i++)
       {
          pos = cvs_data[i].find(";");
          tmp = (int)cvs_data[i].substr(1,pos);
          if(tmp == cle)
          {
             for(j=i; j<count(cvs_data)-1; j++)
             {
                cvs_data[j] = cvs_data[j+1];
             }
             return true;
          }
       }
       return false;
    }
     
    bool claCvs::load()
    {
       char c;
       FILE * pFile;
       std::string tmp = "";
       pFile = fopen (cvs_file, "r");
       if(pFile == NULL)
          return false;
       do {
          c = fgetc(pFile);
          if (c == '\n')
          {
             *cvs_data = tmp;
             tmp = "";
          }
          else 
             tmp = tmp + c;
       }while (c != EOF);   
       fclose(pFile);
    }
     
    bool claCvs::save()
    {
       char c;
       FILE * pFile;
       std::string tmp = "";
       pFile = fopen (cvs_file, "w+");
       if(pFile == NULL)
          return false;
       for(int i=0; i<count(cvs_data); i++)
       {
          fputs(cvs_data[i], pFile);
          fputc("\n", pFile);
       }    
       fclose(pFile);
    }
    et enfin les erreurs:
    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
     
    [C++ Avertissement] claCvs.cpp(7): W8058 Impossible de créer l'en-tête pré-compilé : en-tête incomplet
    [C++ Erreur] claCvs.cpp(8): E2111 Le type 'claCvs' ne doit pas être défini ici
    [C++ Erreur] claCvs.cpp(8): E2136 Un constructeur ne peut pas avoir de spécification de type de retour
    [C++ Erreur] claCvs.cpp(37): E2148 La valeur de l'argument par défaut a été redéclarée pour le paramètre 'avec_cle'
    [C++ Erreur] claCvs.cpp(40): E2285 Impossible de trouver une correspondance pour 'strlen(string)'
    [C++ Erreur] claCvs.cpp(61): E2285 Impossible de trouver une correspondance pour 'itoa(int,string,int)'
    [C++ Erreur] claCvs.cpp(62): E2379 ; manquant dans l'instruction
    [C++ Erreur] claCvs.cpp(65): E2093 'operator*' non implémenté dans le type 'string' pour les arguments du même type
    [C++ Avertissement] claCvs.cpp(67): W8004 'id' est affecté à une valeur qui n'est jamais utilisée
    [C++ Erreur] claCvs.cpp(72): E2268 Appel à une fonction non définie 'count'
    [C++ Erreur] claCvs.cpp(74): E2451 Symbole 'pos' non défini
    [C++ Erreur] claCvs.cpp(74): E2294 Structure nécessaire sur le côté gauche de . ou .*
    [C++ Erreur] claCvs.cpp(75): E2294 Structure nécessaire sur le côté gauche de . ou .*
    [C++ Erreur] claCvs.cpp(78): E2034 Impossible de convertir 'string' en 'char'
    [C++ Erreur] claCvs.cpp(88): E2268 Appel à une fonction non définie 'count'
    [C++ Erreur] claCvs.cpp(90): E2451 Symbole 'pos' non défini
    [C++ Erreur] claCvs.cpp(90): E2294 Structure nécessaire sur le côté gauche de . ou .*
    [C++ Erreur] claCvs.cpp(91): E2294 Structure nécessaire sur le côté gauche de . ou .*
    [C++ Erreur] claCvs.cpp(94): E2451 Symbole 'j' non défini
    [C++ Erreur] claCvs.cpp(94): E2268 Appel à une fonction non définie 'count'
    [C++ Erreur] claCvs.cpp(109): E2034 Impossible de convertir 'string' en 'const char *'
    [C++ Erreur] claCvs.cpp(109): E2342 Mauvaise correspondance de type dans le paramètre '__path' ('const char *' désiré, 'string' obtenu)
    [C++ Erreur] claCvs.cpp(116): E2093 'operator*' non implémenté dans le type 'string' pour les arguments du même type
    [C++ Avertissement] claCvs.cpp(123): W8070 La fonction devrait retourner une valeur
    [C++ Erreur] claCvs.cpp(130): E2034 Impossible de convertir 'string' en 'const char *'
    [C++ Erreur] claCvs.cpp(130): E2342 Mauvaise correspondance de type dans le paramètre '__path' ('const char *' désiré, 'string' obtenu)
    [C++ Erreur] claCvs.cpp(133): E2268 Appel à une fonction non définie 'count'
    [C++ Erreur] claCvs.cpp(135): E2034 Impossible de convertir 'int' en 'const char *'
    [C++ Erreur] claCvs.cpp(135): E2228 Trop de messages d'erreur ou d'avertissements
    Vous pouvez voir que m�me la d�claration de la classe pose probl�me, j'ai du pain sur la planche pour me remettre dans le bain, si vous pouviez me filer un coup de main, outre les erreurs bidons des variables non d�clar�es, j'ai du mal dans mes premiers d�boggages :/

  2. #2
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Le header d�finissant string est <string>, pas <string.h>
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    57
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 57
    Par d�faut
    j'ai d�j� essay� avec et sans le .h, �a n echange rien

  4. #4
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Est-ce que le code suivant marche ?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    #include <string>
     
    int main()
    {
      std::string toto = "Toto";
    }
    Si non, il y a peut-�tre eu un probl�me d'installation du compilateur, une mauvaise ligne de commande...
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  5. #5
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    C'est pas iostream.h mais iostream...
    Dans les ent�tes standard y'a aucun .h...

  6. #6
    Membre �prouv�
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    125
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 125
    Par d�faut
    pour l'erreur claCvs: il te manque 1 point virgule a la fin de ta classe dans le H

    class A
    {
    ...
    };

Discussions similaires

  1. [VB.NET]petit probl�me avec la classe string !!
    Par zouhib dans le forum Windows Forms
    R�ponses: 6
    Dernier message: 01/06/2006, 11h58
  2. Question facile sur la classe string
    Par MarOne dans le forum Langage
    R�ponses: 9
    Dernier message: 20/04/2006, 14h28
  3. la classe string
    Par amel2006 dans le forum Langage
    R�ponses: 2
    Dernier message: 10/04/2006, 16h11
  4. [C++]la classe String
    Par bechbech dans le forum MFC
    R�ponses: 5
    Dernier message: 01/04/2006, 15h35
  5. Fuite m�moire de la classe string
    Par jean_barac dans le forum SL & STL
    R�ponses: 7
    Dernier message: 28/07/2005, 23h12

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