ManicMarble
Erfahrenes Mitglied
Hallo,
das Thema ist wahrscheinlich banal und 1000 mal gefragt, habe auch einiges dazu gefunden, aber das will alles mal wieder nicht wie ich will.
Ich versuche ein komplettes char-Array in Kleinbuchstaben umzuwandeln. Der schönste Einzeiler, den ich hierzu gefunden habe ist dieser:
Leider funktioniert das bei mir nicht (ich teste das in einem einfachen VC++-Konsolen-Projekt). Der Compiler meldet keinen Fehler, aber das Programm stürzt bei der Ausführung ab.
Alternativ habe ich mir dann das hier ausgedacht:
Das selbe Ergebnis.
Es liegt wohl nicht am tolower(), ich kriege den Absturz auch mit
Und am Casting (unsigned char) liegt's auch nicht, Absturz mit und ohne Casting.
Vorläufig mache ich das jetzt so:
Das geht zwar, ich find's aber recht unelegant, weil ich damit ja den String kopiere (in der End-Anwendung will ich das auf recht lange Strings anwenden).
Weiß jemand Rat?
Martin
das Thema ist wahrscheinlich banal und 1000 mal gefragt, habe auch einiges dazu gefunden, aber das will alles mal wieder nicht wie ich will.
Ich versuche ein komplettes char-Array in Kleinbuchstaben umzuwandeln. Der schönste Einzeiler, den ich hierzu gefunden habe ist dieser:
PHP:
char* test = "HALLO hallo Hallo";
for(char* tmp = test; *tmp; tmp++) *tmp = (unsigned char) tolower((unsigned char) *tmp);
cout << test << endl << endl;
Alternativ habe ich mir dann das hier ausgedacht:
PHP:
for(int i = 0; test[i] != '\0'; i++) test[i] = tolower(test[i]);
Es liegt wohl nicht am tolower(), ich kriege den Absturz auch mit
PHP:
for(int i = 0; test[i] != '\0'; i++) test[i] = 'A';
Vorläufig mache ich das jetzt so:
PHP:
char* test = "HALLO hallo Hallo";
char* test2 = _strlwr(_strdup(test));
cout << test2 << endl << endl;
Weiß jemand Rat?
Martin