Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Sfida: Accesso e Manipolazione degli Elementi di una Stringa | Tipo di Dato Testo
Tipi di Dati in C++

bookSfida: Accesso e Manipolazione degli Elementi di una Stringa

Indicizzazione di una stringa

È possibile accedere agli elementi di una string (che sono essenzialmente caratteri di tipo char) utilizzando l'indicizzazione con parentesi quadre [], in modo simile agli array. Questo consente anche di sostituire un carattere in una posizione specifica.

indexing.h

indexing.h

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

L'indicizzazione in una string parte da zero, proprio come negli array.

La lunghezza della stringa

Con questo tipo di indicizzazione, è possibile tentare di accedere a un indice errato (fuori dall'intervallo), e il compilatore non segnalerà alcun errore a riguardo.

main.cpp

main.cpp

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

Come puoi vedere, l'output è inaspettato e C++ non fornisce alcun avviso riguardo al problema. Per evitare ciò, è possibile utilizzare il metodo .length() per determinare la lunghezza di una string e assicurarsi che l'indice sia all'interno dell'intervallo valido.

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 }

Indicizzazione tramite metodo

Un altro modo per indicizzare è utilizzare il metodo .at(). Per ottenere il carattere con indice n, è possibile utilizzare la seguente sintassi:

at.h

at.h

copy
1
str.at(n);

Funziona allo stesso modo di str[n], ma genera un errore se si specifica un indice fuori dall'intervallo.

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 }

Pratica

Come detto in precedenza, è possibile sostituire i caratteri all'interno di una stringa utilizzando l'indicizzazione (sia con [] che con .at()). Ecco un esempio:

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

Swipe to start coding

Hai un indirizzo email come stringa. Il tuo compito è mascherare la parte del nome utente dell'email per motivi di privacy.

La funzione maskEmail accetta una stringa che rappresenta l'indirizzo email.

  1. All'interno di maskEmail, utilizza il metodo find per individuare la posizione del simbolo '@', che segna la fine del nome utente.
  2. Verifica se il nome utente è più lungo di 1 carattere. In caso contrario, restituisci l'email invariata.
  3. Usa un ciclo for per iterare dall'indice 1 fino a (ma non incluso) la posizione di '@'.
  4. All'interno del ciclo, sostituisci ogni carattere con '*' per mascherare il nome utente.
  5. Restituisci l'email modificata.

Soluzione

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 3
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

close

bookSfida: Accesso e Manipolazione degli Elementi di una Stringa

Scorri per mostrare il menu

Indicizzazione di una stringa

È possibile accedere agli elementi di una string (che sono essenzialmente caratteri di tipo char) utilizzando l'indicizzazione con parentesi quadre [], in modo simile agli array. Questo consente anche di sostituire un carattere in una posizione specifica.

indexing.h

indexing.h

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

L'indicizzazione in una string parte da zero, proprio come negli array.

La lunghezza della stringa

Con questo tipo di indicizzazione, è possibile tentare di accedere a un indice errato (fuori dall'intervallo), e il compilatore non segnalerà alcun errore a riguardo.

main.cpp

main.cpp

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

Come puoi vedere, l'output è inaspettato e C++ non fornisce alcun avviso riguardo al problema. Per evitare ciò, è possibile utilizzare il metodo .length() per determinare la lunghezza di una string e assicurarsi che l'indice sia all'interno dell'intervallo valido.

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 }

Indicizzazione tramite metodo

Un altro modo per indicizzare è utilizzare il metodo .at(). Per ottenere il carattere con indice n, è possibile utilizzare la seguente sintassi:

at.h

at.h

copy
1
str.at(n);

Funziona allo stesso modo di str[n], ma genera un errore se si specifica un indice fuori dall'intervallo.

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 }

Pratica

Come detto in precedenza, è possibile sostituire i caratteri all'interno di una stringa utilizzando l'indicizzazione (sia con [] che con .at()). Ecco un esempio:

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

Swipe to start coding

Hai un indirizzo email come stringa. Il tuo compito è mascherare la parte del nome utente dell'email per motivi di privacy.

La funzione maskEmail accetta una stringa che rappresenta l'indirizzo email.

  1. All'interno di maskEmail, utilizza il metodo find per individuare la posizione del simbolo '@', che segna la fine del nome utente.
  2. Verifica se il nome utente è più lungo di 1 carattere. In caso contrario, restituisci l'email invariata.
  3. Usa un ciclo for per iterare dall'indice 1 fino a (ma non incluso) la posizione di '@'.
  4. All'interno del ciclo, sostituisci ogni carattere con '*' per mascherare il nome utente.
  5. Restituisci l'email modificata.

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 3
single

single

some-alt