Ingresso sicuro in C ++

Nei tuoi programmi potrebbe essere necessario richiedere informazioni all'utente. In C ++ le informazioni vengono raccolte usando l'oggetto "cin". Se non si proteggono questi input, è probabile che il programma sia vittima di un "buffer overflow". Infatti, se il numero di caratteri immessi supera la dimensione del buffer originariamente pianificata, gli ultimi dati sovrascrivono altri dati nello stack e i dati errati influiscono sui registri ESP ed EBP.

È possibile proteggere questi dati immessi in diversi modi.

Usando il metodo get ()

 #include int main () {char texte [100]; cin.get (texte, 100); // premier paramètre: la où va la saisie second: taille max de saisie return 0; } 

Questo esempio illustra l'uso di cin.get.

Se il testo inserito supera la dimensione allocata, i caratteri extra vengono ignorati.

Utilizzando il metodo "getline ()"

Questo metodo funziona come get (), ma rimuove il carattere alla fine del buffer.

In effetti, per convalidare un testo, l'utente preme il tasto "Invio", che corrisponde al carattere " \ n ".

getline () rimuove questo personaggio.

== Non funziona !! ===

Ecco un codice che non funziona correttamente:

 # include using namespace std; int main () {char entree [100]; int choix; cout <> choix; cout << "Entrez un texte:"; cin.get (texte, 100); cout << "Terminali di Saisies!"; ritorno 0; } 

In effetti, la seconda voce non viene eseguita e appare il messaggio "Input done! / Saisies terminées!" ".

Come risolvere questo problema?

È necessario utilizzare il metodo " ignore () ".

Il metodo ignore ()

Questo metodo consente di ignorare determinati caratteri in una stringa.

 # include using namespace std; int main () {char entree [100]; int choix; cout <> choix; cout << "Entrez un texte:"; cin.ignore (1, '\ n'); // ignora le caractère d'entrée, qui validait auparavant la saisie. cin.get (texte, 100); cout << "Terminali di Saisies!"; ritorno 0; 

Con questo metodo, il carattere di input viene ignorato e il problema risolto.

Articolo Precedente Articolo Successivo

I Migliori Consigli