kennen:include:string
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— | kennen:include:string [2021-04-30 08:41] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== < | ||
+ | ===== Zeichenkettenklasse std::string ===== | ||
+ | Die Zeichenkettenklasse '' | ||
+ | bzw. '' | ||
+ | setzt den Programmierer von fehlerträchtigen Routineaufgaben frei. | ||
+ | Die Speicherverwaltung erfolgt automatisch. | ||
+ | Die '' | ||
+ | | ||
+ | [[# | ||
+ | [[# | ||
+ | [[# | ||
+ | [[# | ||
+ | [[# | ||
+ | [[# | ||
+ | [[# | ||
+ | für [[#Ein- und Ausgabe]], | ||
+ | [[# | ||
+ | [[# | ||
+ | [[# | ||
+ | und den Zugriff auf [[# | ||
+ | und [[# | ||
+ | Zur Beschreibung der umfangreichen Klassenschnittstelle werden | ||
+ | folgende Parameternamen benutzt: | ||
+ | |||
+ | <code cpp> | ||
+ | std:: | ||
+ | const std:: | ||
+ | const char* ptr; | ||
+ | char c; | ||
+ | std:: | ||
+ | std:: | ||
+ | </ | ||
+ | |||
+ | ==== Konstruktoren ==== | ||
+ | Konstruktoren schaffen einen neuen '' | ||
+ | |||
+ | |||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | <code cpp> | ||
+ | char* ptr = " | ||
+ | std::string s1; // leer | ||
+ | std::string s2 = ptr; | ||
+ | std::string s3(ptr); | ||
+ | std::string s4(s2, 7); // "world of strings!" | ||
+ | std::string s5(s2, 7, 5); // " | ||
+ | std::string s6(5, ' | ||
+ | std::string s7(ptr, ptr+5); // " | ||
+ | </ | ||
+ | |||
+ | ==== Zuweisen ==== | ||
+ | Zuweisungen mit '' | ||
+ | |||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | <code cpp> | ||
+ | s = ptr; | ||
+ | s = ' | ||
+ | s.assign(5,' | ||
+ | s.assign(ptr, | ||
+ | </ | ||
+ | |||
+ | ==== Anhängen ==== | ||
+ | Verknüpfungen (Anhängen) können mit mit Operatoren '' | ||
+ | |||
+ | <code cpp> | ||
+ | s += str; // s = s + str; | ||
+ | s += ptr; // s + ptr | ||
+ | s += c; // | ||
+ | </ | ||
+ | Die '' | ||
+ | |||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | |||
+ | ==== Einfügen ==== | ||
+ | Einfügungen schieben vor '' | ||
+ | bzw. vor den Iterator '' | ||
+ | |||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | <code cpp> | ||
+ | s = immer; | ||
+ | s.insert(0, " | ||
+ | s.insert(3, | ||
+ | s.insert(s.end(), | ||
+ | cout << s.insert(s.size(), | ||
+ | </ | ||
+ | |||
+ | ==== Löschen ==== | ||
+ | Löschmethoden entfernen | ||
+ | |||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | <code cpp> | ||
+ | s = "Alles Überflüssige wird unverzüglich gelöscht."; | ||
+ | s.erase(s.end()-1); | ||
+ | s.erase(s.begin()+6, | ||
+ | s.erase(5, | ||
+ | </ | ||
+ | |||
+ | ==== Ersetzen ==== | ||
+ | Ersetzen lassen sich '' | ||
+ | oder der Iteratorbereich (first, | ||
+ | |||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | <code cpp> | ||
+ | std::string s1 = "Das funktioniert nur dann, wenn du fest dran glaubst."; | ||
+ | std::string s2 = " | ||
+ | s1.replace(s1.find(" | ||
+ | s1.replace(s1.find(" | ||
+ | s1.replace(s1.end()-1, | ||
+ | </ | ||
+ | |||
+ | ==== Suchen ==== | ||
+ | Suchmethoden suchen ab '' | ||
+ | einen Teilstring, eine C-Zeichenkette oder ein Zeichen | ||
+ | |||
+ | | von vorn | von hinten| | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | || | ||
+ | | die erste Übereinstimmung | die letzte Übereinstimmung| | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | | | | ||
+ | | die erste Nichtübereinstimmung | die letzte Nichtübereinstimmung| | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | |||
+ | Sie liefern den Anfangsindex der gefundenen Kette bzw. des Zeichens, | ||
+ | auf das die geforderte Bedingung zutrifft. | ||
+ | Bei fehlgeschlagener Suche wird die Konstante '' | ||
+ | |||
+ | <code cpp> | ||
+ | std::string s = " | ||
+ | std::string NT = " | ||
+ | std::string vokale = " | ||
+ | |||
+ | pos = s.find(NT); | ||
+ | pos = s.rfind(NT); | ||
+ | pos = s.find_first_of(vokale); | ||
+ | pos = s.find_last_of (vokale); | ||
+ | pos = s.find_first_not_of(vokale); | ||
+ | pos = s.find_last_not_of (vokale); // 14 | ||
+ | |||
+ | if (pos != std:: | ||
+ | { | ||
+ | std::cout << " | ||
+ | << s << ' | ||
+ | << std:: | ||
+ | } | ||
+ | </ | ||
+ | Ob eine Teilzeichenkette enthalten ist, erkannt man ab C++23 einfacher mit '' | ||
+ | ==== Vergleichen ==== | ||
+ | Vergleiche mit den Operatoren '' | ||
+ | |||
+ | <code cpp> | ||
+ | std::string s = " | ||
+ | char* ptr = " | ||
+ | |||
+ | if (name == s || name == ptr) | ||
+ | { | ||
+ | std::cout << "Die spinnen, die Roemer!\n"; | ||
+ | } | ||
+ | </ | ||
+ | Die '' | ||
+ | bzw. ab '' | ||
+ | |||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | Sie liefern | ||
+ | * einen negativen Wert, wenn '' | ||
+ | * einen positiven Wert, wenn '' | ||
+ | * 0 bei Übereinstimmung. | ||
+ | |||
+ | ==== Ein- und Ausgabe ==== | ||
+ | Ein- und Ausgaben erfolgen mit den Stromoperatoren. | ||
+ | Eingelesen wird nur ein Wort bis vor das nächste Whitespace-Zeichen, | ||
+ | führende Whitespaces werden dabei übergangen. | ||
+ | Die globale Funktion '' | ||
+ | alle Zeichen bis zum Auftreten des Begrenzers '' | ||
+ | Der Begrenzer wird aus dem Strom entfernt, jedoch nicht in die Zeichenkette aufgenommen. | ||
+ | |||
+ | <code cpp> | ||
+ | std::cin >> s; | ||
+ | std:: | ||
+ | std::cout << s << ' | ||
+ | </ | ||
+ | |||
+ | ==== Zeichenzugriff ==== | ||
+ | Der Zugriff auf einzelne Zeichen erfolgt mit | ||
+ | '' | ||
+ | Wenn '' | ||
+ | '' | ||
+ | Die '' | ||
+ | aufgefasst und mit [[..: | ||
+ | |||
+ | <code cpp> | ||
+ | reverse(s.begin(), | ||
+ | </ | ||
+ | [[..: | ||
+ | liefern die Methoden | ||
+ | |||
+ | | '' | ||
+ | | '' | ||
+ | |||
+ | ==== Vertauschen ==== | ||
+ | Vertauschungen wechseln die Objektwerte aus. | ||
+ | |||
+ | <code cpp> | ||
+ | std::string s1=" | ||
+ | s1.swap(s2); | ||
+ | std:: | ||
+ | </ | ||
+ | |||
+ | Größe und Kapazität sind erfragbar und änderbar. | ||
+ | |||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | |||
+ | ==== Teilketten und C-Zeichenketten ==== | ||
+ | Teilzeichenketten und C-Zeichenketten lassen sich herausziehen: | ||
+ | |||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | <code cpp> | ||
+ | std::string s = " | ||
+ | cout << s.substr(9, | ||
+ | </ | ||
+ | Die Umwandlung in eine C-Zeichenkette sollte nur erfolgen, wenn dies unumgänglich ist. | ||
+ | Der von '' | ||
+ | wie der liefernde '' | ||
+ | Die Methode wurde hauptsächlich eingeführt, | ||
+ | weil viele (alte) Bibliotheksfunktionen einen '' | ||
+ | Bei '' | ||
+ | von '' | ||
+ | |||
+ | <code cpp> | ||
+ | char ptr[80]; | ||
+ | std:: | ||
+ | ptr[anzahl] = ' | ||
+ | </ | ||
+ | ===== Funktionen ===== | ||
+ | <code cpp> | ||
+ | std:: | ||
+ | </ | ||
+ | [[..: | ||
+ | Liest aus dem Datenstrom die Zeichenfolge bis vor den begrenzer. Der Begrenzer wird aus dem Datenstrom entfernt. | ||
+ | |||
+ | <code cpp> | ||
+ | std::string to_string (long long zahl); | ||
+ | std::string to_string (unsigned long long zahl); | ||
+ | std::string to_string (double zahl); | ||
+ | </ | ||
+ | [[..: | ||
+ | | ||
+ | |||
+ | <code cpp> | ||
+ | int stoi | ||
+ | long | ||
+ | long long stoll (const std:: | ||
+ | unsigned long stoul (const std:: | ||
+ | unsigned long long stoull (const std:: | ||
+ | </ | ||
+ | [[..: | ||
+ | | ||
+ | |||
+ | <code cpp> | ||
+ | float | ||
+ | double | ||
+ | long double stold (const std:: | ||
+ | </ | ||
+ | [[..: | ||
+ | | ||