2014-09-11 8 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

어떻게 적분 출력 범위지도의 내용을 나는()하지만, 이런 식으로 호출 할 수있는 매개 변수로 범위 stoi 일종의 필요 ? – wakjah

+0

범위를 숫자로 변환하는 표준 방법에는 [] (http://en.cppreference.com/w/cpp/header/algorithm) 및 [] (http : //www.cplusplus. com/reference/numeric /) –

+0

값의 범위에서 단일 값으로의 매핑은 무엇입니까? 합집합? 평균? 중앙값? 표준 편차? 최대? 분? – nakiya

답변

0

버퍼에서 tag = value 형식의 텍스트 메시지를 구문 분석하려고합니다. 우리는 sti (str, pos, base) 함수를 C++ 11에서 가지고 있지만 그것을 호출하기 위해서는 "str"객체가 존재해야하며 적절한 값을 포함해야합니다.

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);