CString Operationen?
-
is doch bloß mathe ^^
stell dir vor, du bekommst werte zwischen 0 und 99, brauchst aber Werte zwischen 100 un 199. was machst du?? richtig! 100 addieren
Is mit den ASCII werten dass selbe, nur das die zahlen selbst sich ein bischen unterscheiden
-
feiadragon schrieb:
kurze frage wie kommt man auf sowas???
Man schaut sich ne ASCII-Tabelle an und sieht, dass man 32 addieren muss. Moment, addieren ist aber nicht geek genug, toupper auch nicht. Also machen wir eine AND-Verknüpfung, damit kein ungeübtes Auge auf Anhieb sehen kann was wir eigentlich machen.
-
MaSTaH schrieb:
Moment, addieren ist aber nicht geek genug, toupper auch nicht. Also machen wir eine AND-Verknüpfung, damit kein ungeübtes Auge auf Anhieb sehen kann was wir eigentlich machen.
nix geek.
wenn man hat:
"MaSTaHdenktnichtnachbevorerpostet"
dann wird mit '& 0xdf' daraus:
"MASTAHDENKTNICHTNACHBEVORERPOSTET"
mit einer addition würden das 1. 3. 4. und 6. zeichen nicht mehr so toll aussehen.
-
Man würde den case vorher prüfen und könnte es trotzdem besser lesen.
Ändert ausserdem nichts an der Tatsache dass es scheiße aussieht, also kein Argument gegen toupper.
-
aha... danke!
aber:
mein schöner DateiName:
"abc def ghi.mp3"
wird elegant zu
"Abc" gemacht, ohne .mp3 oder andere Sachen...
-
ja, dein ' ' (leerzeichen) wird ja auch ver-and-et.
versuch malchar up (char c) { //helferlein return toupper(c); } int main () { //mit char arrays char n[] = "abc def.mp3"; use_facet<ctype<char> >(locale()).toupper(n, n+sizeof(n)); cout << n << endl; //mit std::strings string m = "abc def.mp3"; transform (m.begin(), m.end(), m.begin(), up); cout << m << endl; }
CString bietet vielleicht ähnliches. da musst du aber die leute im MFC-forum fragen.
-
Ich würde etwas in der Art vorschlagen, ist aber ungetestet und nur schnell hingehackt...
void convert(char* str) { while(*str) { if(*str++ == ' ') *str = static_cast<char>(toupper(*str)); } }
Falls toupper(0) nicht 0 zurückgibt muss man noch nen check vorher einbauen
-
MaSTaH schrieb:
Ich würde etwas in der Art vorschlagen, ist aber ungetestet und nur schnell hingehackt...
void convert(char* str) { while(*str) { if(*str++ == ' ') *str = static_cast<char>(toupper(*str)); } }
Falls toupper(0) nicht 0 zurückgibt muss man noch nen check vorher einbauen
Diese Funktion funktioniert allerdings nicht für das 1. Zeichen.
So sollte es gehen:void convert(char* str) { if(*str) *str = static_cast<char>(toupper(*str)); while(*str) if(*str++ == ' ') *str = static_cast<char>(toupper(*str)); }
-
Hi!
Es sollte doch wohl "!= ' '" statt "== ' '" heißen oder?
void convert(char* str) { while(*str) { if(*str == ' ') // EDIT: aus != -> == *str = static_cast<char>(toupper(*str)); ++str; } }
Code-Hacker
-
Code-Hacker: Wieso? Deine Version würde alle Zeichen ausser dem Leerzeichen in den Uppercase wandeln. Das war aber nicht gefragt (und geht btw. einfacher).
-
---
-
Hi!
MaSTaH schrieb:
Code-Hacker: Wieso? Deine Version würde alle Zeichen ausser dem Leerzeichen in den Uppercase wandeln. Das war aber nicht gefragt (und geht btw. einfacher).
Ah, sry, sehe schon.
Ansonsten ist das die selbe Version wie deine, nur das das erste Zeichen mitgemacht wird.Code-Hacker
-
Nö, schau mal genau hin... Deine Version ändert den String nicht :p
.
-
MaSTaH schrieb:
Nö, schau mal genau hin... Deine Version ändert den String nicht :p
.
Meinst du MEINE Version?
-
CodeHackers Version war gemeint.