使用boost :: string_ref将int转换为小的字符串迭代

时间:2013-04-14 01:14:46

标签: c++ string performance boost

我正在写一个像tokenizer一样的东西。 我想使用boost::string_ref返回“令牌值”。 我想通过char遍历string_ref读取char,然后返回包含值的子字符串。

让我们来看看非常简约的例子:

string test = "testing string";
boost::string_ref rtest(test);

//-------- and now we can go this way --------
auto begin = rtest.begin();
auto end   = rtest.end();
for(/*something*/){
    process_char(*end); // print char
    end ++;
}
// how to return rtest(begin,end)?

// -------- or this way --------
int begin = 0;
int end   = 0;
for(/*something*/){
    process_char(rtest[end]);
    end++;
}
return rtest.substr(begin, end);

在代码中显示了两种迭代字符串的方法:使用指针和int。 指针方式很好,但是没有办法在指针之间返回boost::string_ref.substr,第二种方法使用ints和int可以处理一些数字,对于大型输入文件来说可能很小。

那么可以通过这种方式迭代大输入吗?

1 个答案:

答案 0 :(得分:1)

要返回给定两个指针的子字符串,请执行以下操作:

return boost::string_ref(begin, end-begin);

请确保您的参考字符串存在于您要返回的范围内。