//#include<cctype/ctype.h>
//处理 0xff 字符后只留下ff;//0xff前后都有空格
//-c 0xff -n
//1、除去0x之前的空格操作
while (isblank(*coremask))
coremask++;
//2、除去0x或0X
if (coremask[0] == '0' && ((coremask[1] == 'x') || (coremask[1] == 'X')))
coremask += 2;
//3、除去0xff之后的空格操作
i = strlen(coremask);
while ((i > 0) && isblank(coremask[i - 1])) //i - 1略过字符串的最后一个字符'\0'
i--;
//4、如果参数长度为空、直接返回退出
if (i == 0)
return -1;
//字符:'0'-'9';'a'-'f';'A'-'F'
//输入字符并返回int型数据
static int xdigit2val(unsigned char c)
{
int val;
if (isdigit(c))
val = c - '0';
else if (isupper(c))
val = c - 'A' + 10;
else
val = c - 'a' + 10;
return val;
}
gettimeofday函数包含的头文件:#include<sys/time.h>
/* 获取当前毫秒时间
*/
static long get_millisecond()
{
struct timeval tp = {0};
gettimeofday(&tp, NULL);
return (long)(tp.tv_sec * 1000 + tp.tv_usec / 1000);
}
//c++关于boost::tokenizer的分词应用
#include <iostream>
#include <string>
using namespace std;
#include<boost/tokenizer.hpp>
int main()
{
ulong startInt=0,stopInt=0;
std::string str = "/Employees/Employee[@emplid='2222']";
typedef boost::tokenizer<boost::char_separator<char> >
tokenizer;
boost::char_separator<char> sep("","/()[]\"'=<>",boost::keep_empty_tokens);
tokenizer tokens(str, sep);
for (tokenizer::iterator tok_iter = tokens.begin();tok_iter != tokens.end(); ++tok_iter){
if((*tok_iter).size()>0){
startInt=stopInt;
stopInt+=(*tok_iter).size();
cout<<"start:"<<startInt<<"=="<<"stop:"<<stopInt<<"=="<<"text:"<<*tok_iter<<endl;
}
}
return 0;
}
详解:
1. char_separator
char_separator有两个构造函数
1. char_separator()
使用函数 std::isspace() 来识别被弃分隔符,同时使用 std::ispunct() 来识别保留分隔符。另外,抛弃空白单词。(见例2)
2. char_separator(// 不保留的分隔符
const Char* dropped_delims,
// 保留的分隔符
const Char* kept_delims = 0,
// 默认不保留空格分隔符, 反之加上改参数keep_empty_tokens
empty_token_policy empty_tokens = drop_empty_tokens)
该函数创建一个 char_separator 对象,该对象被用于创建一个 token_iterator 或 tokenizer 以执行单词分解。dropped_delims 和 kept_delims 都是字符串,其中的每个字符被用作分解时的分隔符。当在输入序列中遇到一个分隔符时,当前单词即完成,并开始下一个新单词。dropped_delims 中的分隔符不出现在输出的单词中,而 kept_delims 中的分隔符则会作为单词输出。如果 empty_tokens 为 drop_empty_tokens, 则空白单词不会出现在输出中。如果 empty_tokens 为 keep_empty_tokens 则空白单词将出现在输出中。