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 | Tekstgegevenstype
C++-Datatypen
Sectie 3. Hoofdstuk 3
single

single

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

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 ervoor 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 de .at()-methode te gebruiken. Om het teken met index n te verkrijgen, kunnen we de volgende syntaxis gebruiken:

at.h

at.h

copy
1
str.at(n);

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 }

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

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

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.

  1. Gebruik binnen maskEmail de find-methode om de positie van '@' te bepalen, wat het einde van de gebruikersnaam aangeeft.
  2. Controleer of de gebruikersnaam langer is dan 1 teken. Zo niet, geef het e-mailadres ongewijzigd terug.
  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. Geef het aangepaste e-mailadres terug.

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