single
Uitdaging: Toegang Krijgen Tot en Manipuleren Van Stringelementen
Veeg om het menu te tonen
Indexeren van een string
Toegang tot de elementen van een string (die in feite char-tekens zijn) is mogelijk met behulp van vierkante haakjes [], vergelijkbaar met arrays. Hiermee kan ook een teken op een specifieke positie worden vervangen.
indexing.h
12string str = "Cpdefinity"; // Cpdefinity str[1] = 'o'; // Codefinity
Indexering in een string begint bij nul, net als bij arrays.
De lengte van de string
Met deze indexering kun je proberen een ongeldige index te benaderen (die buiten het bereik valt), en de compiler zal je daar niet voor waarschuwen.
main.cpp
1234567#include <iostream> int main() { std::string word = "Codefinity"; std::cout << word[12]; // Word's length is 10 }
Zoals je ziet is de uitvoer onverwacht, en C++ geeft geen waarschuwing over het probleem. Om dit te voorkomen kun je de .length()-methode gebruiken om de lengte van een string te bepalen en ervoor te zorgen dat de index binnen het geldige bereik valt.
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 }
Indexeren met behulp van methode
Een andere manier van indexeren is door de .at()-methode te gebruiken. Om het teken met index n te verkrijgen, kunnen we de volgende syntaxis gebruiken:
at.h
1str.at(n);
Werkt hetzelfde als str[n], maar geeft een foutmelding als je een index opgeeft die buiten het bereik valt.
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 }
Oefenen
Zoals eerder vermeld, kunnen we de tekens in een string vervangen met behulp van indexering (zowel met [] als .at()). Hier is een voorbeeld:
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; }
Veeg om te beginnen met coderen
Je hebt een e-mailadres als string. De opdracht is om het gebruikersnaamgedeelte van het e-mailadres te maskeren voor privacy.
De functie maskEmail ontvangt een string die het e-mailadres voorstelt.
- Gebruik binnen
maskEmaildefind-methode om de positie van'@'te bepalen, wat het einde van de gebruikersnaam aangeeft. - Controleer of de gebruikersnaam langer is dan 1 teken. Zo niet, geef het e-mailadres ongewijzigd terug.
- Gebruik een
for-lus om te itereren van index 1 tot (maar niet inclusief) de positie van'@'. - Vervang binnen de lus elk teken door
'*'om de gebruikersnaam te maskeren. - Geef het aangepaste e-mailadres terug.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.