wchar_t
-
Ich habe noch ein Problem:
Ich habe bei dem FAQ Eintrag konvertierung absolut nichts verstanden...
ich überlege mir schon lange, wie ich diese zwei funktionen schreiben kann.
void wchar_t* convert(const std::basic_string<char>& str) { } void char* convert(const std::basic_string<wchar_t>& str) { }
-
erstmal: Was ist bitteschön "void char*" für ein Typ? (wenn du schon Standard-Typen verwendest, dann gib bitte auch basic_string's zurück)
Zweitens: char* nach wchar_t* dürfte recht einfach sein, indem du die Werte einzeln überträgst, die umgekehrte Richtung ist schwieriger, da nicht jedes wchar_t einem char zugeordnet werden kann.
Drittens: Unter MFC gibt es ein Set von Makros (A2W,W2A und noch ein paar Variantionen wie T2W oder A2CW), die du dir eventuell mal ansehen solltest.
-
Welche Funktion ersetzt strlen(const char* str)?
-
Was meinst du mit "ersetzen"? (w)string's haben eine Memberfunktion length() und size(), für einfache wchar_t* kannst du wsclen() verwenden (vermutlich nicht portabel) oder selber etwas schreiben.
-
Warum funktioniert das hier nicht?
bool image::load(const std::basic_string<wchar_t>& name)
{
// Dateiendung ermitteln
std::basic_string<wchar_t> cap;
for(unsigned int c = 0; c < name.length(); c ++)
cap[c] = toupper(name[c]); // <--...
-
man: toupper und andere Funktionen sind zwar als 'int' deklariert, sind aber in Wirklichkeit nur für char's vorgesehen.