Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [C++] User input check

Hybrid View

  1. #1
    Amaro C++, il gusto pieno dell'undefined behavior.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    41
    thx

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    41
    Ho letto la tua template e per intenderci, la modifica che volevo apportare ma non mi riesce (o meglio mi riuscirebbe ma perdendo in generalità...) è un qualcosa di questo tipo, in cui si distingue il caso in cui Result debba essere int.

    codice:
    #include <iostream>
    #include <limits>
    #include <string>
    #include <typeinfo>
    
    
        template<typename InType> void AcquireInput(std::ostream & Os, std::istream & Is, const std::string & Prompt, const std::string & FailString, InType & Result)
        {
            bool check;
            double aux;
            do
            {
                Os<<Prompt.c_str();
                if(Is.fail())
                {
                    Is.clear();
                    Is.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
                }
                if(typeid(Result).name() == "int")
                {
                    Is>>aux;
                    check = ((Is.fail())||(((int)aux-aux)!=0));
                    }
                else {
                     check = (Is.fail()); 
                     }
                if(check){
                    Os<<FailString.c_str();
                    }
                else{
                     Is>>Result;
                     }
            } while(check);
        }
    
    
        template<typename InType> InType AcquireInput(std::ostream & Os, std::istream & Is, const std::string & Prompt, const std::string & FailString)
        {
            InType temp;
            AcquireInput(Os,Is,Prompt,FailString,temp);
            return temp;
        }
    probabilmente è sbagliato qualcosa, ma è solo per intenderci...
    Ultima modifica di Toxotes; 19-11-2013 a 17:27

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 © 2025 vBulletin Solutions, Inc. All rights reserved.