2014-09-11 2 views
0

Я ищу функцию шаблона для преобразования диапазона в интегральный тип. Это будет выглядеть примерно так:Преобразование диапазона в интегральное целое

template<typename InputIterator, typename IntegralType> 
IntegralType convert(InputIterator first, InputIterator last) 
{ 
... 
} 

и он может быть использован, как это:

vector<char> buf; 
int tag=convert<int>(buf.begin(), buf.end()); 

Есть стандартный способ сделать это? Кто-нибудь уже делал это раньше?

Благодаря

+1

Как сделать содержимое карты диапазона для интегрального выхода ? – wakjah

+0

Существует множество стандартных способов преобразования диапазонов в числа, определенные в [] (http://en.cppreference.com/w/cpp/header/algorithm) и [] (http: //www.cplusplus. com/reference/numeric /) –

+0

Каково ваше отображение из диапазона значений в одно значение? сумма? имею в виду? медиана? стандартное отклонение? Максимум? мин? – nakiya

ответ

0

Я пытаюсь разобрать текстовые сообщения в теге = формат значения из буфера. У нас есть функция stoi (str, pos, base) в C++ 11, но для ее вызова вам нужно, чтобы объект «str» существовал и содержал правильное значение. Мне нужно что-то вроде Stoi(), но с диапазоном в качестве параметра, который можно было бы назвать так:

string str { "49=SenderCompID|50=SenderSubID|..." }; 
int tag1 = stoi(str.begin(), str.begin() + str.find('=')); 
int tag2 = stoi(str.begin()+17, str.begin() + 19); 

или даже лучше:

vector<char> buf { str.begin(), str.end() }; 
unsigned tag = stointegral<unsigned>(buf.begin(), buf.begin() + 2); 
Смежные вопросы