single
Challenge: Adgang til og Manipulation af Streng-Elementer
Stryg for at vise menuen
Indeksering af en string
Elementerne i en string (som i bund og grund er char-tegn) kan tilgås ved hjælp af firkantede parenteser [], 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.
Strenglængde
Med denne indeksering kan du forsøge at tilgå et forkert indeks (uden for rækkevidde), og compileren vil ikke advare dig 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 ingen advarsel om problemet. For at undgå 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 hjælp 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);
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 udskifte 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 brugernavnet i e-mailen af hensyn til privatlivets fred.
Funktionen maskEmail modtager en streng, der repræsenterer e-mailadressen.
- Inden i
maskEmailskal du bruge metodenfindtil at finde positionen af'@'-symbolet, som markerer slutningen af brugernavnet. - Kontroller, 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 skal du erstatte 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