Forum Programmation.c++ STL + libxml = ...

Posté par  .
Étiquettes : aucune
0
22
août
2004
Bonjour

Je programme en ce moment un outil en C++, utilisant la libxml2. Cette librairie utilise de nombreux types qui lui sont propres afin de combler des lacunes du C : xmlChar est par exemple le remplaçant du char. (http://xmlsoft.org/html/libxml-xmlstring.html(...))
Je souhaite convertir ce xmlChar en std::string mais je n'y arrive pas !
Voici le code source :

node = xmlobject->nodesetval->nodeTab[0];
xmlChar *nom_paquet = xmlGetProp(node, xmlCharStrdup("name"));
resultat = std::string(nom_paquet);

node est un xmlNodePtr, et resultat un std::string.

G++ n'aime pas ça, et me le fait comprendre par un :
error: invalid conversion from `xmlChar*' to `const char*'
error: initializing argument 1 of `std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char, _Traits = std::char_traits, _Alloc = std::allocator]'
concernant tous deux la dernière ligne (resultat = ...)

Quelqu'un peut-il m'indiquer une solution ?

Merci d'avance

PS : je souhaiterais à tout prix éviter de changer de librairie pour l'XML !
  • # unsigned

    Posté par  (site web personnel) . Évalué à 4.

    regarde au début de ton url xmlchar = unsigned char, donc il va falloir que tu caste ton xmlchar en (char *), ou que tu utilises des std::basic_string<unsigned char>
    • [^] # Re: unsigned

      Posté par  . Évalué à 1.

      Peux-tu s'il-te-plaît me donner le code source correspondant à ce que tu as évoqué ?
      Mon bouquin sur le C++ est trop vieux pour connaître la STL ou les namespaces, et il ne parle pas de caste. Transtypage c'est ça ?
      Merci pour ta réponse !
  • # problème de cast

    Posté par  . Évalué à 4.

    Tu fais un truc du style :

    resultat = std::string(reinterpret_cast<const char*>(nom_paquet));

    et cela devrait fonctionner.
  • # Merci à vous

    Posté par  . Évalué à 1.

    Merci à °o° et à hope pour les réponses... J'avais pas que ça comme erreur (ma requête XPath déconnait) donc ça merdait, forcément. Mais pour le code C++ c'est nickel !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.