Преобразование 64-битного целого числа из строки

Я имею дело с проблемой чтения 64-битного целого числа без знака unsigned long long из строка. Мой код должен работать как для GCC 4.3, так и для Visual Studio 2010.

Я прочитал этот вопрос и ответил на эту тему: Прочтите 64-битную целочисленную строку из файла и подумайте, что strtoull будет сделать работу лучше и эффективнее, чем при использовании std :: stringstream . К сожалению, strtoull недоступен в Visual Studio stdlib.h .

Я написал короткую шаблонную функцию:

template 
T ToNumber(const std::string& Str)
{
    T Number;
    std::stringstream S(Str);
    S >> Number;
    return Number;
}

unsigned long long N = ToNumber("1234567890123456789");

Меня беспокоит эффективность этого решения, поэтому есть ли лучший вариант в этом сценарии?

5
задан Community 23 May 2017 в 10:34
поделиться