Добрый день всем.
Возник интересный вопрос:
Входным параметром в ф-ю подаётся строка с целым беззнаковым числом, например "12345678912345678911"
Каким образом можно конвертировать число типа unsigned long long из строки?
Здравствуйте, Аноним, Вы писали:
А>Добрый день всем. А>Возник интересный вопрос: А>Входным параметром в ф-ю подаётся строка с целым беззнаковым числом, например "12345678912345678911" А>Каким образом можно конвертировать число типа unsigned long long из строки?
bool is_space(char c) { return c>0 && c<=32; }
bool is_number(char c) { return c>='0' && c<='9'; }
template<class T> bool getuint(T& r,const char* s) {
const char* p=s;r=0;
while (*p && is_space(*p)) p++;
if (!is_number(*p)) return false;
for(r=*p++;*p && is_number(*p);++p) { r*=10; r+=*p-48; }
while (*p && is_space(*p)) p++;
return *p=='\0';
}
...
char* txt="12345678912345678911";
unsigned long long z=0;
getuint(z,txt); // страшный минус только в отсутствии проверки на переполнение :'(
Re[2]: Конвертировать число из строки
От:
Аноним
Дата:
04.02.08 11:17
Оценка:
Здравствуйте, Аноним, Вы писали:
Спасибо, но все оказалось намного проще:
char buf[256]="";
unsigned long long ullMegaDigit=0;
...
sscanf_s( buf,"%I64u", &ullMegaDigit );
Здравствуйте, Аноним, Вы писали:
А>Добрый день всем. А>Возник интересный вопрос: А>Входным параметром в ф-ю подаётся строка с целым беззнаковым числом, например "12345678912345678911" А>Каким образом можно конвертировать число типа unsigned long long из строки?
#include <sstream>
#include <iostream>
template< class T >
T convert(const char* number)
{
std::istringstream number_stream(number);
T result;
number_stream >> result;
return result;
}
int main()
{
const char* txt_a="12345678912345678911";
std::cout << "a = " << convert<unsigned long long>(txt_a) << std::endl;
const char* txt_b="-123456789123456789";
std::cout << "b = " << convert<long long>(txt_b) << std::endl;
return 0;
}
Здравствуйте, Аноним, Вы писали:
А>Добрый день всем. А>Возник интересный вопрос: А>Входным параметром в ф-ю подаётся строка с целым беззнаковым числом, например "12345678912345678911" А>Каким образом можно конвертировать число типа unsigned long long из строки?