Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Uitdaging: Toegang Krijgen Tot en Manipuleren Van Stringelementen | Tekstdatatype
Practice
Projects
Quizzes & Challenges
Quizzen
Challenges
/
C++ Gegevenstypen
Sectie 3. Hoofdstuk 3
single

single

bookUitdaging: 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

indexing.h

copy
12
string str = "Cpdefinity"; // Cpdefinity str[1] = 'o'; // Codefinity
Note
Opmerking

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

main.cpp

copy
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

main.cpp

copy
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

at.h

copy
1
str.at(n);

Het werkt hetzelfde als str[n], maar geeft een foutmelding als je een index opgeeft die buiten het bereik valt.

main.cpp

main.cpp

copy
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

main.cpp

copy
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; }
Taak

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.

  1. Gebruik binnen maskEmail de find-methode om de positie van het '@'-symbool te vinden, wat het einde van de gebruikersnaam aangeeft.
  2. Controleer of de gebruikersnaam langer is dan 1 teken. Zo niet, retourneer het e-mailadres ongewijzigd.
  3. Gebruik een for-lus om te itereren van index 1 tot (maar niet inclusief) de positie van '@'.
  4. Vervang binnen de lus elk teken door '*' om de gebruikersnaam te maskeren.
  5. Retourneer het aangepaste e-mailadres.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 3
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

some-alt