single
Challenge: Zugriff auf 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
12string str = "Cpdefinity"; // Cpdefinity str[1] = 'o'; // Codefinity
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 falschen Index (außerhalb des gültigen Bereichs) zuzugreifen, und der Compiler gibt darüber keine Warnung aus.
main.cpp
1234567#include <iostream> int main() { std::string word = "Codefinity"; std::cout << word[12]; // Word's length is 10 }
Wie zu sehen ist, 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
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
1str.at(n);
Funktioniert genauso wie str[n], löst jedoch einen Fehler aus, wenn ein Index außerhalb des gültigen Bereichs angegeben wird.
main.cpp
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 wir die Zeichen in einem String mithilfe von Indizierung ersetzen (sowohl mit [] als auch mit .at()). Hier ein Beispiel:
main.cpp
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; }
Wischen, um mit dem Codieren zu beginnen
Eine E-Mail-Adresse liegt als Zeichenkette vor. Die 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 repräsentiert.
- Innerhalb von
maskEmaildie Methodefindverwenden, um die Position des Zeichens'@'zu ermitteln, das das Ende des Benutzernamens markiert. - Prüfen, ob der Benutzername länger als 1 Zeichen ist. Falls nicht, die E-Mail unverändert zurückgeben.
- Eine
for-Schleife verwenden, um vom Index 1 bis (ausschließlich) zur Position von'@'zu iterieren. - Innerhalb der Schleife jedes Zeichen durch
'*'ersetzen, um den Benutzernamen zu maskieren. - Die modifizierte E-Mail zurückgeben.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen