single
Udfordring: Adgang til og Manipulation af Streng-Elementer
Stryg for at vise menuen
Indeksering af en string
Vi kan få adgang til elementerne i en string (som i bund og grund er char-tegn) ved at bruge firkantede parenteser [] til indeksering, ligesom med arrays. Dette gør det også muligt at udskifte et tegn på en bestemt position.
indexing.h
12string str = "Cpdefinity"; // Cpdefinity str[1] = 'o'; // Codefinity
Indeksering i en string starter fra nul, ligesom i arrays.
Længden af strengen
Med denne indeksering kan du forsøge at tilgå et forkert indeks (uden for rækkevidde), og compileren vil ikke give dig nogen advarsel om dette.
main.cpp
1234567#include <iostream> int main() { std::string word = "Codefinity"; std::cout << word[12]; // Word's length is 10 }
Som du kan se, er outputtet uventet, og C++ giver ikke nogen advarsel om problemet. For at forhindre dette kan du bruge .length()-metoden til at bestemme længden af en string og sikre, at indekset er inden for det gyldige område.
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 }
Indeksering ved brug af metode
En anden måde at indeksere på er ved at bruge .at()-metoden. For at få tegnet med indeks n, kan vi bruge følgende syntaks:
at.h
1str.at(n);
Det fungerer på samme måde som str[n], men vil give en fejl, hvis du angiver et indeks, der er uden for rækkevidde.
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 }
Øvelse
Som nævnt tidligere kan vi erstatte tegnene i en streng ved hjælp af indeksering (både med [] og .at()). Her er et eksempel:
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; }
Swipe to start coding
Du har en e-mailadresse som en streng. Din opgave er at maskere brugernavnsdelen af e-mailen af hensyn til privatlivets fred.
Funktionen maskEmail modtager en streng der repræsenterer e-mailadressen.
- Inden i
maskEmail, brugfind-metoden til at finde positionen af'@'-symbolet, som markerer slutningen af brugernavnet. - Tjek om brugernavnet er længere end 1 tegn. Hvis ikke, returneres e-mailen uændret.
- Brug en
for-løkke til at iterere fra indeks 1 op til (men ikke inklusive) positionen af'@'. - Inden i løkken, erstat hvert tegn med
'*'for at maskere brugernavnet. - Returnér den modificerede e-mail.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat