我正在寻找一个模板函数来将范围转换为整数类型。它看起来像这样:
template<typename InputIterator, typename IntegralType>
IntegralType convert(InputIterator first, InputIterator last)
{
...
}
它可以像这样使用:
vector<char> buf;
int tag=convert<int>(buf.begin(), buf.end());
有没有标准的方法来做到这一点?有没有人以前做过这个?
由于
答案 0 :(得分:0)
我正在尝试从缓冲区解析tag = value格式的文本消息。 我们在C ++ 11中有stoi(str,pos,base)函数,但为了调用它,你需要存在“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);