本文整理汇总了C++中tokenizer::shift方法的典型用法代码示例。如果您正苦于以下问题:C++ tokenizer::shift方法的具体用法?C++ tokenizer::shift怎么用?C++ tokenizer::shift使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tokenizer
的用法示例。
在下文中一共展示了tokenizer::shift方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
template <typename R> bool extract_escape(R& result,tokenizer& tokenizer)
{
result.clear();
//controls
dictionary<string,ascii> controls=
{
"\\r",'\r',
"\\n",'\n',
"\\t",'\t'
};
//buffer
R content;
array<ascii> buffer;
array<ascii> current;
//escape
if(tokenizer.delimit(current,"\\x"))
{
//hexa
buffer.append(current);
//hexa
if(!tokenizer.xdigit(current,2))
return false;
buffer.append(current);
//parse with c api
int value=0;
if(!current.join("").parse_integer(value,16))
return false;
//byte
if(!between(value,0,256))
return false;
//push
content.push(value);
}
else if(tokenizer.any(current,controls.keys()))
{
//control
buffer.append(current);
content.push(controls[current]);
}
else if(tokenizer.delimit(current,"\\"))
{
//backslash
buffer.append(current);
//next
if(!tokenizer.shift(current,1))
return false;
content.append(current);
buffer.append(current);
}
else
return false;
//commit
result=content;
update(symbols()._escape,buffer);
return true;
}