我试图在dot上拆分我的实际键,然后在点上分割后提取所有字段。
我的钥匙看起来像这样 -
@event.1384393612958.1136580077.TESTING
目前,我能够在点上分割后仅提取第一个@event
字段。现在如何提取所有其他字段。下面是我的代码,我目前正在使用它从中提取第一个字段。
if (key)
{
char* first_dot = strchr(key, '.');
if (first_dot)
{
// cut at the first '.' character
first_dot[0] = 0;
}
}
cout << "Fist Key: " << key << endl;
然后在提取单个字段后,将第二个字段存储为uint64_t
,将第三个字段存储为uint32_t
,将最后一个字段存储为string
。
更新: -
这就是我现在所拥有的 -
if (key)
{
char *first_dot = strtok(key, ".");
char *next_dot = strtok(NULL, ".");
uint64_t secondField = strtoul(next_dot, 0, 10);
cout << first_dot << endl;
cout << secondField << endl;
}
我可以从中提取第一和第二个字段。第三和第四场呢?
答案 0 :(得分:1)
您可以改用strtok
。 strtok
完全正确,你现在正在做什么。它在遇到分隔字符时分割字符串
if (key) {
char *first_dot = strtok(key, ".");
...
char *next_dot = strtok(NULL, ".");
}
可以使用strtoul/strtoull
int
类型
uint64_t i = strtoul(next_dot, 0, 10);