Jak sprawdzić że wprowadzona zmienna nie jest liczbą?
Ostatnio zmodyfikowano 2010-03-15 13:02
Elaine |
» 2010-03-14 23:46:08 Powiedzmy, że tak. |
|
marek Temat założony przez niniejszego użytkownika |
» 2010-03-15 09:45:41 Dzięki dla pekfosa i Iname. Program pekfos-a skomplikowany, ale działa na 100%. Program Iname prosty, ale działa na 99%. np. "23vf45" przyjął jako liczbę 23.
|
|
Elaine |
» 2010-03-15 11:39:10 Trochę mi się nudziło, więc stworzyłem takiego potworka, którego można użyć do wczytywania dowolnego badziewia ze strumienia. Jak działa, to chyba się można domyśleć ;)
template < typename T, typename CharT, typename Traits > bool read( std::basic_istream < CharT, Traits >& istr, T & result ) { using namespace std; istr >> result; if( istr.good() ) { const ctype < CharT >& ctype_facet = use_facet < ctype < CharT > >( istr.getloc() ); if( ctype_facet.is( ctype < CharT >::space, Traits::to_char_type( istr.peek() ) ) ) { return true; } } else if( istr.eof() ) { return false; } istr.clear(); istr.sync(); return false; }
I, tradycyjnie, przykład użycia: #include <iostream> #include <locale> using namespace std;
int main() { while( cin.good() ) { int x; if( read( cin, x ) ) { cout << "liczba to: " << x << '\n'; } else { cout << "dupa blada!\n"; } } } |
|
marek Temat założony przez niniejszego użytkownika |
» 2010-03-15 13:02:04 Działa.Reaguje nawet na liczbę typu float! Próbuję rozgryźć, ale za cienki jestem. Dzięki Iname.
|
|
1 « 2 » |