Wie funktioniert tolower bzw. towlower ?
-
Hi
Wie kann man die oben genannten Funktionen selbst implentieren ?
Lies: Wie arbeiten diese ?
-
Schau dir mal die ASCII-Tabelle an. Dann kommst Du schon drauf. http://www.asciitable.com/
-
Hm und wie funktioniert das mit towlower ?
-
HelpPlz schrieb:
Wie kann man die oben genannten Funktionen selbst implentieren ?
Lies: Wie arbeiten diese ?
Das kommt darauf an, wie mächtig die Funktion sein soll. Wenn Du einfach nur A-Z abdecken willst: easy. Einfach das fünfte Bit setzen (für Kleinbuchstaben) bzw. löschen (für Großbuchstaben):
char to_lower(char x) { return x | 32; }Für komplexere Abbildungen (Unicode ...) braucht man Tabellen.
-
Konrad Rudolph schrieb:
char to_lower(char x) { return x | 32; }hehe, damit hauste das bit in jedes zeichen rein...
besser so:char to_lower(char x) { if (x>='A' && x<='Z') x |= 32; return x; }
-
Wow, ok danke für eure Antworten, hat mir sehr geholfen!
Ähm noch eine hoffentlich kleine Frage: Wie kann ich ohne CRT-Funktionen einen double Wert in einen C-String umwandeln ?
Ich danke schonmal
!
-
HelpPlz schrieb:
Ähm noch eine hoffentlich kleine Frage: Wie kann ich ohne CRT-Funktionen einen double Wert in einen C-String umwandeln ?
Mit der STL. *sncr* (Das hier ist ein C++-Forum.)
-
Nene, ich meine ganz ohne derartige Funktionen bzw. Klassen
.
-
Na ja, dann wird es komplizierter.
Ich denke mal, das einfachste wird es, das ganze in zwei Teilen (Ganzzahl- und Nachkommateil) zu betrachten und dann folgendes zu machen (nur ein Ansatz):
string dtos(double d) { string s; int i_part = d; bool sig = false; if (i_part < 0) { i_part = -i_part; d = -d; sig = true; } double f_part = d - i_part; while (i_part > 0) { s += char(i_part % 10) + '0'; i_part /= 10; } if (sig) s += '-'; reverse(s.begin(), s.end()); s += ','; while (f_part > 0) { f_part *= 10; int digit = f_part; s += char(digit) + '0'; f_part -= digit; } return s; } int main() { string s = dtos(-1234.5678); cout << s << endl; }