Конвертировать char * в произвольный числовой тип без использования stringstream - PullRequest
0 голосов
/ 05 апреля 2011

Я хотел бы иметь возможность преобразовывать символ * в произвольный числовой тип T Аналогично приведенному ниже, но без использования библиотеки stringstream, и, очевидно, что используется строковый тип, который я тоже не хочу использовать.

Как бы я поступил так?

например

template<class T>
T string_as_T( const string& s )
{
    // Convert from a string to a T
    // Type T must support >> operator
    T t;
    std::istringstream ist(s);
    ist >> t;
    return t;
}

Ответы [ 2 ]

3 голосов
/ 05 апреля 2011

черт?

 template<class T>
 char* fmt(T value) { throw new /*some exception, or return null*/; }

 char* fmt<int>(int value) { return "%d"; } // forgive rusty specialization syntax
 // write fmt<double>, char, float, long, etc

 template<class T>
 T string_as_T( const char* s )
 {
     T val;
     sscanf(s, fmt(val), &val);
     return val;
 }
1 голос
/ 05 апреля 2011

Вы можете использовать boost.conversion , lexical_cast для достижения этой цели.

#include "boost/lexical_cast.hpp"  

char* string = "15";
int output = 0;
output = boost::lexical_cast<INT_TYPE>(string);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...