[C++Builder] UnicodeString <-> const char *
-
Hi Leute,
ich hab mit C++ keine Erfahrung, aber folgendes Problem.
Ich habe einen Konstruktor der folgende Überladungen hat:TiXmlDocument( const char * documentName ); TiXmlDocument( const std::string& documentName );
Und nun will ich den aufrufen:
void __fastcall openXMLFile(String fileName) { TiXmlDocument doc(fileName); doc.LoadFile(); ...
Aber ich bekomme die Fehlermeldung:
Keine Übereinstimmung für 'TiXmlDocument::TiXmlDocument(UnicodeString)' gefunden
uXMLFormatter.cpp(26): Analyse: void _fastcall openXMLFile(UnicodeString)fileName ist ein UnicodeString und kommt von Edit1->Text.
Wie bekomme ich das nun hin?
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum VCL (C++ Builder) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo
Technisch kannst du die Konvertierung durch einen explizieten Konstruktoraufruf vornehmen lassen :
TiXmlDocument doc(AnsiString(fileName).c_str());
Allerdings versagt diese Konvertierung für alle Dateinamen, die Unicode-zeichen enthalten, die nicht in der aktuell im Betriebsystem geladenen Codepage für AnsiString vorhanden sind.
Deshalb ist die einzig ordentliche Lösung, eine Unicode-Variante von TiXmlDocument zu verwenden, bzw. auf eine Klasse für XML umzusteigen, die Unicode verarbeiten kann.bis bald
akari