CString Operationen?
-
dann wird der buchstaben groß.
-
feiadragon schrieb:
dann wird der buchstaben groß.
so ist es
printf ("%c\n", 'a' & 0xdf);
gibt ein grosses 'A' aus
-
kurze frage wie kommt man auf sowas??? steht das hier irgendwo im Forum oder wie???
Oder holt man sowas aus der Msdn oder findet man sowas selber?Darauf wär ich im Traum nicht drauf gekommen
-
feiadragon schrieb:
kurze frage wie kommt man auf sowas???
man muss nur mal eine ascii-tabelle gesehen haben. dann fällt das schon auf
feiadragon schrieb:
Darauf wär ich im Traum nicht drauf gekommen
klar, da kommt jeder drauf. du hast es nur nicht versucht
-
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.