2010-09-26 8 views
0

D'accord, je vais avoir des problèmes avec la pièce de code suivante (dans un fichier d'en-tête):C++: Problème aide d'une chaîne comme argument d'une fonction

#ifndef XML_H_INCLUDED 
#define XML_H_INCLUDED 
#include "libxml/parser.h" 
#include "libxml/xmlwriter.h" 
#include <string> 


class XmlFile{ 
public: 
    XmlFile(string filename){ 
     file = xmlParseFile(filename); 


    } 
    xmlDocPtr file; //Pointer to xml file 


}; 



#endif // XML_H_INCLUDED 

Le fichier est compris dans le fichier source principal (mais n'est pas accessible, donc son contenu n'est pas important).

Je continue à obtenir l'erreur suivante (en Codeblocks):

error: cannot convert 'std::string' to 'const char*' 
for argument '1' to 'xmlDoc* xmlParseFile(const char*)'| 

J'ai couru en cela plusieurs fois, et il me rend fou.

Je préférerais ne pas utiliser des vecteurs si possible (ajoute une autre étape dans l'initialisation de la fonction.

Qu'est-ce que je fais mal? J'ai essayé de regarder ça, mais n'ont pas trouvé de réponses satisfaisantes.

Merci à l'avance.

Répondre

6
file = xmlParseFile(filename.c_str()); 
+0

Qu'est-ce que cela fait? Comment ça marche? Merci. – Biosci3c

+0

Je dois ajouter que cette ligne de code fonctionne très bien, mais je suis curieux de savoir ce qu'il fait exactement (donc je peut éviter des erreurs similaires dans le futur.) Est-ce simplement une fonction définie dans "String" qui retourne la chaîne? Comment contourner le problème const char *? – Biosci3c

+1

@ Biosci3c, std :: string a une méthode c_str() qui retourne un const const *. Le xmlParseFile attend un const const * (tout comme l'erreur du compilateur dit) ... pas un std :: string. – dgnorton

Questions connexes