Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Utfordring: Tilgang til og Manipulering av Strengelementer | Tekstdatatypen
Practice
Projects
Quizzes & Challenges
Quizer
Challenges
/
C++ Datatyper
Seksjon 3. Kapittel 3
single

single

bookUtfordring: Tilgang til og Manipulering av Strengelementer

Sveip for å vise menyen

Indeksering av en streng

Vi kan få tilgang til elementene i en string (som i hovedsak er char-tegn) ved å bruke hakeparenteser [] for indeksering, på samme måte som med arrayer. Dette gjør det også mulig å erstatte et tegn på en bestemt posisjon.

indexing.h

indexing.h

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

Indeksering i en string starter fra null, akkurat som i arrayer.

Lengden på strengen

Med denne indekseringen kan du forsøke å få tilgang til en ugyldig indeks (utenfor rekkevidde), og kompilatoren vil ikke gi deg noen advarsel om dette.

main.cpp

main.cpp

copy
1234567
#include <iostream> int main() { std::string word = "Codefinity"; std::cout << word[12]; // Word's length is 10 }

Som du ser, er utdataene uventede, og C++ gir ingen advarsel om problemet. For å forhindre dette kan du bruke metoden .length() for å finne lengden på en string og sikre at indeksen er innenfor gyldig område.

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 }

Indeksering ved bruk av metode

En annen måte å indeksere på er å bruke .at()-metoden. For å hente ut tegnet med indeks n, kan vi bruke følgende syntaks:

at.h

at.h

copy
1
str.at(n);

Den fungerer på samme måte som str[n], men vil gi en feil hvis du angir en indeks som er utenfor rekkevidde.

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 }

Øvelse

Som nevnt tidligere, kan vi erstatte tegnene i en streng ved å bruke indeksering (både med [] og .at()). Her er et eksempel:

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; }
Oppgave

Swipe to start coding

Du har en e-postadresse som en streng. Oppgaven din er å maskere brukernavndelen av e-posten for personvern.

Funksjonen maskEmail tar en streng som representerer e-postadressen.

  1. Inne i maskEmail, bruk find-metoden for å finne posisjonen til '@'-symbolet, som markerer slutten på brukernavnet.
  2. Sjekk om brukernavnet er lengre enn 1 tegn. Hvis ikke, returner e-posten uendret.
  3. Bruk en for-løkke for å iterere fra indeks 1 og opp til (men ikke inkludert) posisjonen til '@'.
  4. Inne i løkken, erstatt hvert tegn med '*' for å maskere brukernavnet.
  5. Returner den modifiserte e-posten.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 3
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

some-alt