我正在写一些类似于记号赋予器的东西。我想使用boost::string_ref返回"token values“。我希望遍历string_ref,逐个读取字符,然后返回包含值的子字符串。
让我们来看一个非常简约的例子:
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,第二个方法使用int,int可以处理一些数字,对于大的输入文件来说可能太小了。
那么,有没有可能以这种方式对大输入进行迭代呢?
发布于 2013-04-14 09:48:18
要返回给定两个指针的子字符串,请执行以下操作:
return boost::string_ref(begin, end-begin);只需确保您的引用字符串存在于您要返回的作用域中。
https://stackoverflow.com/questions/15994704
复制相似问题