我正在写类似标记器的东西。我想boost::string_ref
用来返回“令牌值”。我想遍历 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 可以处理一些数字,对于大型输入文件来说可能很小。
那么是否有可能以这种方式对大量输入进行迭代?