Konvertierung von const wchar_t* zu const char*!?
-
Hey ihr,
ich bastle grad an einem kleinen Projekt rum, wozu ich eine OpenSource API verwende zum Umgang mit gepackten Dateiformaten...
Ich habe eine Funktion die einen "const char*" zurückliefert. Diese Funktion darf ich leider auch nicht verändern und da liegt das Problem.
Der Compiler meckert nämlich rum, dass angeblich ein "const wchar_t*" zurückgegeben wird und den könne man nicht in einen "const char*" konvertieren.
Der originale Rückgabewert ist ein "const TCHAR *" ( es handelt sich um c_str).Ich würde es ja einfach umcasten, aber wie gesagt, ich darf die Funktion nicht verändern.
Wenn ich in den Einstellungen von UNICODE of MultiByte stelle geht es, aber dann kriege ich unaufgelöste externe Symbolfehler mit der String Klasse der OpenSource API. Unter UNICODE funktioniert dies allerdings.
Gibt es irgendeine Möglichkeit einzustellen, dass er den c_str als const char behandeln soll? So müßte ich in der Funktion nichts umschreiben und könnte bei UNICODE bleiben damit die API läuft.
Ich verwende dabei VS2008.
Ich hoffe ich hab nicht zuviel chinesisch erzählt und mein Anliegen ist verständlich
Bin nicht so der Profi 
Grüße,
Edit: Achja, wenn ich UNICODE Einstellung verwende und die Funktion mit ihrem Rückgabewert rausnehme, läuft alles.... Aber ich brauch die Funktion halt

Geschrieben wurde die Funktion in VS6.0.
Edit 2: Kurz gesagt, ich suche eine Möglichkeit, den "cannot convert from 'const wchar_t *' to 'const char '" wegzukriegen, ohne auf MultiBytes umzustellen und in der Funktion die den Fehler verursacht rumzuschreiben...
Es soll ein "const char" zurückgegeben werden und im return steht die Membervariable c_str eines std::basic_string<TCHAR>.
-
Na ja, ein TCHAR ist bei Unicode eben ein wchar_t und bei MB ein char. Wenn du die Funktion nicht ändern kannst du _UNICODE definiert sein muss, bleibt dir vermutlich nichts übrig, außer an allen aufrufenden Stellen zu casten...
-
Du darfst nicht casten, sondern musst Konvertieren!
Verwende z.B. CA2CT
-
Entschuldigung, meinte ich ja eigentlich...
