Visualizzazione dei risultati da 1 a 4 su 4

Discussione: verifica input in c++

  1. #1

    verifica input in c++

    Salve a tutti,

    vorrei sapere come posso fare la verifica dell'input in c++, mi spiego meglio: chiedo all'utente di digitare un numero intero, ma se l'utente inserisce una lettera? Ho provato con il seguente codice, ma non funziona :

    #include <iostream>

    using namespace std;

    int main(){

    int a;

    do{
    cout<<"Inserire un numero intero: "<<endl;
    cin>>a;
    }while((a>='a')&&(a<='z'));

    system("PAUSE");

    return 0;

    }

    Il codice sopra scritto dovrebbe fare la verifica solo sulle lettere, ma se voglio impedire anche che l'utente inserisca altri caratteri (tipo !"£$% ecc) come posso fare?

    Grazie a chi mi darà una mano, ciao!
    carlo

  2. #2
    Visto che usi cin>> con una variabile di tipo int non è possibile che tu acquisisca un carattere; se l'utente inserirà un valore errato, la variabile non verrà toccata e lo stream imposterà il failbit, che tu potrai controllare chiamando il metodo cin.fail(). Se esso restituisce true, significa che non è stato possibile estrarre l'intero dallo stream, per cui dovrai disattivare il failbit (cin.clear()), svuotare il buffer che conterrà ancora i caratteri errati (cin.sync()) e richiedere all'utente di inserire il valore.
    codice:
    int a;
    do
    {
        cout<<"Inserisci un intero: ";
        cin.clear();
        cin.sync();
        cin>>a;
    } while(cin.fail());
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Ciao MItaly,

    grazie mille per avermi risposto, il codice funziona perfettamente, adesso però mi devo un po' studiare quelle funzioni che hai usato, perchè non le conoscevo!
    carlo

  4. #4

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.