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 :

Un peu d'aide sur la class string


Sujet :

C++

Vue hybride

KindPlayer Un peu d'aide sur la class... 03/06/2008, 10h14
loicounet un petit mot avant d'aller en... 03/06/2008, 10h25
nikko34 MACRO te renvoie une... 03/06/2008, 10h29
KindPlayer Bon je reformate un peu mon... 03/06/2008, 10h39
nikko34 ta MACRO elle renvoie un... 03/06/2008, 11h23
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Par défaut Un peu d'aide sur la class string
    Bonjour

    J'aimerais avoir quelques précisions sur la classe std::string de C++. En fait j'utilise une macro qui retourne une string. Pour récupérer la string dans une variable j'ecris std::string *str = new string(MACRO(parametres)) en utilisant le constructeur par copie. Quand j'ecris simplement std::string = MACRO(parametres) j'ai une violation mémoire (fichiers dbgheap.c et dbgdel.c pour ceux qui ont deja vu ca). Malheureusement je sais pas comment est ecrite la fonction MACRO. Si vous avez une idée de pourquoi la deuxieme solution marche pas?
    Autre chose j'aimerais pouvoir reattribuer ma variable str. J'ai tenté
    str = &(MACRO(nouveaux parametres)) mais ca plante aussi (mais pas tout le temps :s). Je suis assez nul en C++ comme vous vous en doutez en lisant ces lignes alors ne me moquez pas trop vite, merci

  2. #2
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 155
    Par défaut
    un petit mot avant d'aller en pause
    pose des bouts de code avec les balises...c'est plus facile a lire car ton post est assez condensé et ca donne pas envie de lire

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    MACRO te renvoie une std::string ou un char*?

  4. #4
    Membre chevronné Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Par défaut
    Bon je reformate un peu mon message. Donc je souhaite récupérer une instance de std::string via une marco qui retourne une string (et pas un char* pour repondre au message précédent). J'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     std::string *str = new string(MACRO(parametres))
    en utilisant le constructeur par copie. Ca ca marche. En revanche, si j'écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::string = MACRO(parametres)
    ca plante, une alloc qui a pas été faite je présume mais en principe l'alloc a lieu dans la fonction MACRO. Peut-etre dois je déclarer ma variable comme étant une référence sur le retour de la fonction?
    J'aimerais également pouvoir reattribuer ma variable str. J'ai testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str = &(MACRO(nouveaux parametres))
    mais ca plante aussi (mais pas tout le temps :s). Voila si vous avez qq idées et précisions à me fournir sur le fonctionnement précis de la classe String (je préfère la classe String de java ).

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    ta MACRO elle renvoie un std::string, pas un std::string* ?

    alors:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::string str = MACRO( param );
    ça ça ne marche pas?

    les string C++ ne sont pas compliqués. Ce qui est compliqué c'est que tu utilises une MACRO qui a l'air bien pourrie et que tu te mélanges les pinceaux avec les pointeurs ( alors qu'en C++ ils ne sont pas fait pour être utilisés tout le temps ).

    la classe string s'utilise très bien comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    std::string str = "toto";
    std::string str2 = str;
    std::string str3 = str + str2;
     
    std::cout << str3 << std::endl;

  6. #6
    Membre chevronné Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Par défaut ben ouai je sais bien
    quand j'ai ecrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::string = MACRO(parametres)
    il fallait bien sur lire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::string str = MACRO(parametres)
    c'est ce que j'avais d'abord écris dans mon code mais comme ca plantait je me suis résolu a faire une allocation dynamique qui elle a fonctionné. Ouai la macro doit etre bien pourrie et elle retourne bien un string pas un string* (d'ou l'emploi du constructeur par copie pour l'alloc dynamique). Mais jcomprends toujours pas pourquoi la première déclaration sans passer par un pointeur marche pas. Et pour réattribuer ma string je suis obligé d'écrire à chaque fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str = new string(MACRO(nouveaux parametres))
    ce qui est bien laid je trouve. Je précise que tt ça s'exécute au sein d'une JNI ca joue peut-être un rôle.. Enfin pour l'instant je comprends pas bien.

Discussions similaires

  1. Un peu d'aide sur une expression régulière particulier
    Par ruana dans le forum Général Python
    Réponses: 2
    Dernier message: 03/06/2007, 19h04
  2. [stl] questions sur la classe string
    Par r0d dans le forum SL & STL
    Réponses: 3
    Dernier message: 23/02/2007, 00h31
  3. Question facile sur la classe string
    Par MarOne dans le forum Langage
    Réponses: 9
    Dernier message: 20/04/2006, 14h28
  4. Aide sur POO :: Classe et liste d'objet
    Par Andry dans le forum Langage
    Réponses: 1
    Dernier message: 23/01/2006, 15h51
  5. svp un peu d'aide sur mon update, resumé simple en dessous
    Par hansaplast dans le forum Langage SQL
    Réponses: 11
    Dernier message: 14/11/2005, 10h14

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