single
Uitdaging: Toegang Krijgen Tot en Manipuleren Van Stringelementen
Veeg om het menu te tonen
Indexeren van een string
We kunnen de elementen van een string (die in wezen char-tekens zijn) benaderen met behulp van vierkante haakjes [], vergelijkbaar met arrays. Hiermee kunnen we ook een teken op een specifieke positie 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 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 gebruik te maken van de .at()-methode. Om het teken met index n te verkrijgen, kan de volgende syntaxis worden gebruikt:
at.h
1str.at(n);
Het 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 }
Oefening
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; }
Swipe to start coding
Je hebt een e-mailadres als string. Je taak 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 het'@'-symbool te vinden, wat het einde van de gebruikersnaam aangeeft. - Controleer of de gebruikersnaam langer is dan 1 teken. Zo niet, retourneer het e-mailadres ongewijzigd.
- 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. - Retourneer het aangepaste e-mailadres.
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.