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

XML Discussion :

Conversion de string


Sujet :

XML

  1. #1
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 188
    Points : 143
    Points
    143
    Par défaut Conversion de string
    Bonjour,

    En utilisant la méthode de conversion d'un string en n'importe quel type (dans la FAQ), j'ai utilisé la méthode sur un string (donc conversion de string en string, assez inutile si ce n'est que ca permet d'utiliser les templates) et cela m'a mis un bordel monstre dans le code (modification des zones mémoires).

    Est-ce normal ? Faut-il spécialiser le template pour ne pas convertir les string ?

  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 : 39
    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
    Aucun souci a priori. Tu peux peut-être nous montrer un petit code complet qui reproduit le problème ?

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 188
    Points : 143
    Points
    143
    Par défaut
    Voici pour le bout de code. L'idée est de lire les variables de mon programme depuis un fichier xml (en utilisant tinyxml).

    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
    template <typename T>
    T read_xml_val(TiXmlNode &parent, const string &name,T def)
    {
       T result;
       TiXmlText *txtnode;  // noeud xml qui contient le texte
       string text;
       istringstream iss;
     
       result = def; // valeur par defaut
     
       txtnode = get_xml_text(parent,name);
       if (txtnode) {
          text = txtnode->ValueStr();
          iss.str(text);
          iss >> result; // ---> Bug si T est un string
       }
       return result;
    }
    J'ai donc cette fonction template qui lit le texte associé à ma variable et le convertit.

    Cette fonctionne fonctionne sans problème pour les type int, double, bool mais quand je l'appelle avec T = string, le programme plante par la suite (mais pas dans cette fonction) comme si la mémoire avait été modifiée.

    En particulier j'ai plus loin (autre procédures, dans des classes) des initialisation du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string montexte = "texte";
    Aucun problème avant l'appel à cette procédure, ensuite montexte prend n'importe quelle valeur !

    J'ai déjà mis un bout de temps à cerner le problème et j'ai du mal à comprendre l'erreur.

  4. #4
    Invité
    Invité(e)
    Par défaut
    iss.str(text) <= ???Vu nulle part sur la FAQ de mettre une variable ici (entre les parenthèses),tu es sûr de toi?

    edit: je viens d'aller voir dans sstream et pour le str(variable) j'ai trouvé ça en commentaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
          /**
           *  @brief  Setting a new buffer.
           *  @param  s  The string to use as a new sequence.
           *
           *  Deallocates any previous stored sequence, then copies @a s to
           *  use as a new one.
          */

  5. #5
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 188
    Points : 143
    Points
    143
    Par défaut
    tu es sûr de toi?
    Non. J'ai essayé de mettre directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    istringstream iss(text)
    mais je ne retrouve pas non plus ma chaîne initiale.

    Pour l'instant j'ai contourné le problème en spécialisant mon template pour les string mais je ne trouve pas ca satisfaisant...

Discussions similaires

  1. Conversion byte [] -> String
    Par MiJack dans le forum Langage
    Réponses: 3
    Dernier message: 20/10/2005, 18h16
  2. [C#] Conversion System.String en System.Drawing.Color
    Par Silex dans le forum Windows Forms
    Réponses: 6
    Dernier message: 27/04/2005, 08h21
  3. Réponses: 3
    Dernier message: 26/05/2004, 23h03
  4. conversion de String en Num
    Par Assiobal dans le forum SL & STL
    Réponses: 31
    Dernier message: 15/05/2004, 21h18
  5. Conversions de String à Integer
    Par Rank dans le forum Langage
    Réponses: 5
    Dernier message: 06/08/2003, 16h30

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