2013-04-13 1 views
0

У меня есть эти строки:Как перевести char * string = "2001-02-03" в целочисленный формат?

const char * date = "2001-02-03"; 
const char * id = "987654/3210"; 

мне нужно очень быстро перевести в целое или, может быть длинное целое (для ид). Мне нужно перевести для сравнения (для чисел strcmp() медленно). У меня есть только эта библиотека:

#include <cstdio> 
#include <cstdlib> 
#include <cstring> 
#include <iostream> 

Пример: константной дата символ * = "2001-02-03"; -> int int_date = 20010203; const char * id = "987654/3210"; -> long long_id =;

Как это сделать?

+2

подсказки: преобразование в ИНТ ИНТ сравнения (ничтожна) вряд ли будут быстрее, чем сравнение строк. вы получите выгоду только от конверсии, если сравнение сделано ** несколько раз **. –

ответ

0

Если у вас есть строка, то только strcmp быстрее, чем преобразование (разбор) в другой формат, а затем сравнение.

Но простой способ синтаксического анализа является:

const char * date = "2001-02-03"; 
int y, m, d; 
int result = sscanf(date, "%d-%d-%d", &y, &m, &d); 

if (result == 3) 
{ 
    // use them 
} 

(я предлагаю свой код только в качестве образца)

Смежные вопросы