Mahtavaa!
Completion arvosana parantunut arvoon 4.35single
Haaste: Merkkijonoelementtien Käsittely ja Muokkaus
Pyyhkäise näyttääksesi valikon
Merkkijonon indeksointi
Voimme käyttää string-tyypin (joka koostuu char-merkeistä) alkioita hakasulkeilla [], samalla tavalla kuin taulukoissa. Tämän avulla voimme myös korvata merkin tietyssä kohdassa.
indexing.h
12string str = "Cpdefinity"; // Cpdefinity str[1] = 'o'; // Codefinity
Indeksointi string-tyypissä alkaa nollasta, kuten taulukoissakin.
Merkkijonon pituus
Tällä indeksoinnilla voit yrittää käyttää väärää indeksiä (joka on alueen ulkopuolella), eikä kääntäjä ilmoita siitä mitään.
main.cpp
1234567#include <iostream> int main() { std::string word = "Codefinity"; std::cout << word[12]; // Word's length is 10 }
Kuten huomaat, tuloste on odottamaton, eikä C++ anna varoitusta ongelmasta. Tämän estämiseksi voit käyttää .length()-metodia määrittääksesi string-muuttujan pituuden ja varmistaa, että indeksi on sallituissa rajoissa.
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 }
Indeksointi metodilla
Toinen tapa indeksoida on käyttää .at()-metodia. Hahmon hakemiseksi indeksillä n voidaan käyttää seuraavaa syntaksia:
at.h
1str.at(n);
Toimii samalla tavalla kuin str[n], mutta aiheuttaa virheen, jos määritetty indeksi on alueen ulkopuolella.
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 }
Harjoittelu
Kuten aiemmin mainittiin, merkkijonon merkkejä voidaan korvata indeksoinnilla (sekä [] että .at() avulla). Tässä on esimerkki:
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
Sinulla on sähköpostiosoite merkkijonona. Tehtävänäsi on peittää sähköpostiosoitteen käyttäjänimi yksityisyyden suojaamiseksi.
Funktio maskEmail ottaa merkkijonon, joka edustaa sähköpostiosoitetta.
- Käytä
maskEmail-funktion sisälläfind-metodia löytääksesi'@'-merkin sijainnin, joka osoittaa käyttäjänimen lopun. - Tarkista, onko käyttäjänimi pidempi kuin 1 merkki. Jos ei ole, palauta sähköposti muuttumattomana.
- Käytä
for-silmukkaa iteroidaksesi indeksistä 1 aina (mutta ei mukaan lukien)'@'-merkin sijaintiin. - Silmukan sisällä korvaa jokainen merkki
'*'-merkillä käyttäjänimen peittämiseksi. - Palauta muokattu sähköpostiosoite.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme