在dot上拆分字符串并从C ++中提取它的所有字段?

时间:2013-11-14 20:26:47

标签: c++ string split char

我试图在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;

}

我可以从中提取第一和第二个字段。第三和第四场呢?

1 个答案:

答案 0 :(得分:1)

您可以改用strtokstrtok完全正确,你现在正在做什么。它在遇到分隔字符时分割字符串

if (key) {
    char *first_dot = strtok(key, ".");
    ...
    char *next_dot = strtok(NULL, ".");
}

可以使用strtoul/strtoull

转换为某种int类型
uint64_t i = strtoul(next_dot, 0, 10);