C++ Einführung
C++ Variablen im Speicher, Zeiger
C++ Texte etc.
C++ Dateien, Formatierte Ausgabe, ...
C++ OOP
Hilfe / Anhang
Downloads / Links
Partner
Fehler melden / Kontakt
Impressum
|
| Seite: [1] - Drucken |
Inhalt:
Durchatmen - Zusammenfassung des dritten Teils
| [drucken] |
C++ Texte
- Texte werden im Computer durch Zahlen dargestellt. Dabei handelt es sich meist um Arrays aus Zeichen ("char")!
- Man kann Zeichen direkt einer Variable zuweisen, oder über den ASCII-Code!
- Es gibt 128 weitere Zeichen, die sich aber von System zu System unterscheiden. Deshalb gibt es Unicode!
- Zum einfachen Umgang mit Texten gibt es außerdem "std::string", womit sich Texte und Wörter einfach darstellen, bearbeiten und einlesen lassen!
char-Arrays
Ein char-Array wird genauso angelegt, wie auch ein anderes Array. Beachte, das die Längenangabe wegfallen kann, der Compiler kümmert sich dann darum:
char str1[5]="Test"; char str2[]="ohne Laengenangabe"; char str3[]={'i','n',' ','C','!','\0'};
 | Zeichenketten werden in C(++) mit einem Nullbyte ("\0") abgeschlossen! Dies ist nötig, da die Länge des Strings sonst unbekannt wäre, und man fremden Speicher lesen/schreiben würde, was zu Programmabstürzen führen kann! |
Funktionen, die C-strings erwarten, orientieren sich am Nullbyte! Man sollte also immer genug Platz haben! (Besser zu viel!)
char-Arrays bearbeiten
Es gibt ein paar Funktionen im C++-Standard, die C-strings bearbeiten:
| int strcmp(str1,str2) | Strings "str1" und "str2" vergleichen und lexikographische Differenz (z.B.: alphabetisch) zurückgeben: Bei einer Rückgabe von "0" sind beide strings identisch!!! |
| strcpy(str1,str2) | String "str2" in "str1" kopieren |
atoi, itoa und atof - Konvertieren
Um eine Eingabe im ASCII-Format in eine Zahl zu verwandeln sind Casts unbrauchbar. Deshalb gibt es noch die 3 oben genannten Funktionen, welche diese Aufgabe übernehmen:
| #include <cstdlib> |
| int atoi(str) | ASCII to int |
| float atof(str) | ASCII to float |
| itoa(int, str, int) | int to ASCII: Parameter 1 wird in Parameter 2 gespeichert, der dritte Parameter gibt das Zahlensystem an, normalerweise "10" für dezimal... |
Dabei werden "unpassende" Zeichen ignoriert, "atof("3.50 Euro")" gibt also "3.5" zurück!
std::string
Wann immer du kannst, solltest du std::strings den C-strings vorziehen!
std::string's anlegen und füllen
Um std::string benutzen zu können, muss man zuerst "<string>" einbinden. Danach kann man ganz normal damit arbeiten, ohne sich um Größen zu kümmern:
#include <string> std::string test; std::string test2="Wackelpudding mit Sahne";
std::string's einlesen
Das Einlesen funktioniert ebenfalls ganz einfach:
std::string eingabe; std::getline(std::cin, eingabe);
std::string's ausgeben
Die Ausgabe erfolgt am besten über "std::cout":
std::string ausgabe="Hund, Katze, Maus!"; std::cout << ausgabe;
std::string und C-Arrays
Hier kommt uns der interne Aufbau eines std::string zugute:
//Von C-String nach std::string: char c_test[20]="Test!"; std::string test= c_test; //Eine Funktion mit einem C-Array stopfen: funktion_braucht_cstring(test.c_str());
Operationen
//Addition: std::string str1="Gold"; std::string str2="esel!"; std::string str3=str1+str2; //str3: "Goldesel!" //Multiplikation: //Zwanzig mal "Raute-Sternchen-Drei" speichern: std::string multikulti (20, "#*3"); //Vergleichen: if (str1==str2) {/*...*/} if (str1>str2) {/*...*/} if (str1<str2) {/*...*/} /*...*/ //Länge ermitteln: int laenge=str3.length(); //Zeichen(kette) einfügen: std::string alta="Das ist ein Test!"; alta.insert(12,"weiterer "); //Parameter: Position, String //Nun: "Das ist ein weiterer Test!" //Zeichen(kette) löschen: alta.erase(12,9); //=>"Das ist ein Test!" //Zeichen ersetzen: std::replace(str1.begin(), str.end(), 'o', 'e');
Suchen...
Um etwas in einem String zu suchen, gibt es viele Möglichkeiten:
| find() |
vorwärts suchen |
| find_first_of() |
Findet die erste Position jedes angegebenen Zeichens |
| find_last_of() |
Findet die letzte Position jedes angegebenen Zeichens |
| find_first_not_of() |
Findet die Position des ersten nicht angegebenen Zeichens |
| find_last_not_of() |
Findet die Position des letzten nicht angegebenen Zeichens |
| rfind() |
Rückwärts suchen |
Ist das Ergebnis dieser Funktion "std::string::npos", enthält der string den Suchbegriff nicht, andernfalls wird ein Integer mit der Position zurückgegeben...
|
| [drucken] |
Ein paar Beispielprogramme?
Ich glaube die Beispiele aus den vorangegangenen Teilen sollten reichen...!?
Ein paar "Aufgaben" (nicht viel)
Wenn du die Aufgaben lösen kannst, solltest du dieses Kapitel verstanden haben...
- Lies einen Satz ein, entferne alle Konsonanten ("nicht-Vokale") und gib ihn einmal richtig und einmal umgedreht aus. Benutze wenn möglich eine eigene Funktion, um die Konsonanten zu entfernen!
- Lies den Namen des Benutzers ein, und ersetze alle "e" durch "ei", du kannst dies auch einmal mit char-Arrays machen... (schwerer)
- Lies einen String ein, und gebe nur die Buchstaben ungerader Positionen aus!
Wie geht's weiter?
Jetzt kommt wieder ein Fun-Kapitel! Jede Menge tolle Sachen machen!
|
| Seite: [1] - Drucken |
|