范围到整数类型转换

时间:2014-09-11 22:10:33

标签: c++ iterator type-conversion

我正在寻找一个模板函数来将范围转换为整数类型。它看起来像这样:

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

它可以像这样使用:

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

有没有标准的方法来做到这一点?有没有人以前做过这个?

由于

1 个答案:

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