Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Herausforderung: Zugriff und Manipulation von String-Elementen | Textdatentyp
Practice
Projects
Quizzes & Challenges
Quizze
Challenges
/
C++-Datentypen
close
Abschnitt 3. Kapitel 3
single

single

bookHerausforderung: Zugriff und Manipulation von String-Elementen

Swipe um das Menü anzuzeigen

Indizierung eines Strings

Die Elemente eines string (im Wesentlichen char-Zeichen) können mit eckigen Klammern [] indiziert werden, ähnlich wie bei Arrays. Dadurch ist es auch möglich, ein Zeichen an einer bestimmten Position zu ersetzen.

indexing.h

indexing.h

copy
12
string str = "Cpdefinity"; // Cpdefinity str[1] = 'o'; // Codefinity
Note
Hinweis

Die Indizierung in einem string beginnt bei null, genau wie bei Arrays.

Die Länge des Strings

Mit dieser Indizierung kann versucht werden, auf einen ungültigen Index (außerhalb des Bereichs) zuzugreifen, ohne dass der Compiler darauf hinweist.

main.cpp

main.cpp

copy
1234567
#include <iostream> int main() { std::string word = "Codefinity"; std::cout << word[12]; // Word's length is 10 }

Wie ersichtlich, ist die Ausgabe unerwartet und C++ gibt keine Warnung zu diesem Problem aus. Um dies zu vermeiden, kann die Methode .length() verwendet werden, um die Länge eines string zu bestimmen und sicherzustellen, dass der Index im gültigen Bereich liegt.

main.cpp

main.cpp

copy
123456789101112
#include <iostream> int main() { std::string word = "Codefinity"; int index = 12; if (index >= word.length()) std::cout << "The output is unexpected!" << std::endl; else std::cout << word[index]; // Word's length is 10 }

Indizierung mit Methode

Eine weitere Möglichkeit der Indizierung ist die Verwendung der Methode .at(). Um das Zeichen mit dem Index n zu erhalten, kann folgende Syntax verwendet werden:

at.h

at.h

copy
1
str.at(n);

Funktioniert wie str[n], löst jedoch einen Fehler aus, wenn ein Index außerhalb des gültigen Bereichs angegeben wird.

main.cpp

main.cpp

copy
12345678
#include <iostream> int main() { std::string word = "Codefinity"; std::cout << word.at(12); // word's length is 10 // Try outputting the character with the index 5 }

Übung

Wie bereits erwähnt, können die Zeichen innerhalb eines Strings mithilfe von Indizierung (sowohl mit [] als auch mit .at()) ersetzt werden. Hier ein Beispiel:

main.cpp

main.cpp

copy
123456789
#include <iostream> int main() { std::string word = "Cpdefinitu"; word[1] = 'o'; word.at(word.length() - 1) = 'y'; // length - 1 accesses the last element std::cout << word; }
Aufgabe

Swipe to start coding

Sie haben eine E-Mail-Adresse als Zeichenkette. Ihre Aufgabe besteht darin, den Benutzernamen-Teil der E-Mail aus Datenschutzgründen zu maskieren.

Die Funktion maskEmail erhält eine Zeichenkette, die die E-Mail-Adresse darstellt.

  1. Verwenden Sie innerhalb von maskEmail die Methode find, um die Position des '@'-Symbols zu ermitteln, das das Ende des Benutzernamens markiert.
  2. Prüfen Sie, ob der Benutzername länger als 1 Zeichen ist. Falls nicht, geben Sie die E-Mail unverändert zurück.
  3. Verwenden Sie eine for-Schleife, um von Index 1 bis (ausschließlich) zur Position von '@' zu iterieren.
  4. Ersetzen Sie innerhalb der Schleife jedes Zeichen durch '*', um den Benutzernamen zu maskieren.
  5. Geben Sie die modifizierte E-Mail-Adresse zurück.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 3
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

some-alt