single
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-olion pituuden ja varmistaa, että indeksi on sallitulla alueella.
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 metodin avulla
Toinen tapa indeksoida on käyttää .at()-metodia. Saadaksesi merkin 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 }
Harjoitus
Kuten aiemmin mainittiin, merkkijonon merkkejä voidaan korvata indeksoinnin avulla (sekä [] että .at()-menetelmällä). Tässä 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; }
Pyyhkäise aloittaaksesi koodauksen
Sinulla on sähköpostiosoite merkkijonona. Tehtävänäsi on peittää käyttäjätunnuksen osa sähköpostista 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ätunnuksen lopun. - Tarkista, onko käyttäjätunnus pidempi kuin 1 merkki. Jos ei ole, palauta sähköposti muuttamattomana.
- Käytä
for-silmukkaa iteroidaksesi indeksistä 1 aina (mutta ei mukaan lukien)'@'-merkin sijaintiin. - Silmukan sisällä korvaa jokainen merkki
'*'-merkillä peittääksesi käyttäjätunnuksen. - Palauta muokattu sähköposti.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme