Определите перегруженные версии isalpha(), isdigit() и т.д. , чтобы они могли корректно работать с char, unsigned char и signed char.
Да господа я только что попробовал, как оказалось они и так корректно работают, вот код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> using std::cout; using std::endl; #include <cctype> using std::isalpha; using std::isdigit; int main() { unsigned char ch='4'; signed char ch1='k'; if(isdigit(ch))cout <<"ch= "<<ch<<endl; if(isalpha(ch1))cout <<"ch1= "<<ch1<<endl; return 0; } |
А перегрузить допустим можно было бы просто определить isdigit(unsigned char uc) {isdigit((char) uc));} просто используя оператор приведения типа.
[youtube]http://www.youtube.com/watch?v=Ah7ydgY0ExI[/youtube]