single
Challenge: Adgang til og Manipulation af Streng-Elementer
Stryg for at vise menuen
Indeksering af en streng
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.
Strengens længde
Med denne indeksering kan du komme til 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 metoden .length() 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);
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 brugernavnet i 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. - 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, 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