a2x

#include <typeinfo>
template <typename T>
bool a2x( T& _f , char* p)
{
    if( !p )
        return false ;

    char* q = p ;
    while( q != '\0')
    {
        if( *q == '-' && *(q+1) >= '0' && *(q+1)<= '9' )
        {
            break ;
        }

        if( *q >= '0' && *q <= '9' )
            break ;

        q++ ;
    }
    if( q =='\0')
        return false ;


    if(typeid(float).name() == typeid(_f).name() )
        sscanf(q,"%f",&_f );
    else if(typeid(int).name() == typeid(_f).name() )
        sscanf(q,"%d",&_f );
    else if(typeid(long).name() == typeid(_f).name() )
        sscanf(q,"%ld",&_f );
    else if(typeid(double).name() == typeid(_f).name() )
        sscanf(q,"%lf",&_f );
    else
        return false ;

    return true ;
}
View Code

 

posted @ 2015-04-06 23:49  细雨细语  阅读(175)  评论(0编辑  收藏  举报