Конвертировать число из строки
От: Аноним  
Дата: 31.01.08 17:14
Оценка:
Добрый день всем.
Возник интересный вопрос:
Входным параметром в ф-ю подаётся строка с целым беззнаковым числом, например "12345678912345678911"
Каким образом можно конвертировать число типа unsigned long long из строки?
Re: Конвертировать число из строки
От: игппук Беларусь  
Дата: 31.01.08 17:29
Оценка:
int value = 0;
sscanf("123", "%i", &value);


рисую по памяти, возможны мелкие неточности.
проклятый антисутенерский закон
Re[2]: Конвертировать число из строки
От: игппук Беларусь  
Дата: 31.01.08 17:31
Оценка:
еще вариант atoi
проклятый антисутенерский закон
Re: Конвертировать число из строки
От: Аноним  
Дата: 31.01.08 21:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добрый день всем.

А>Возник интересный вопрос:
А>Входным параметром в ф-ю подаётся строка с целым беззнаковым числом, например "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 );
Re: Конвертировать число из строки
От: runtime2  
Дата: 05.02.08 08:09
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добрый день всем.

А>Возник интересный вопрос:
А>Входным параметром в ф-ю подаётся строка с целым беззнаковым числом, например "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;
}


Результат:

a = 12345678912345678911

b = -123456789123456789
Re: Конвертировать число из строки
От: creatman Германия  
Дата: 05.02.08 18:43
Оценка: 1 (1) +1
Здравствуйте, Аноним, Вы писали:

А>Добрый день всем.

А>Возник интересный вопрос:
А>Входным параметром в ф-ю подаётся строка с целым беззнаковым числом, например "12345678912345678911"
А>Каким образом можно конвертировать число типа unsigned long long из строки?

boost::lexical_cast


 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.