0

我试图在点上拆分我的实际密钥,然后在点上拆分后提取所有字段。

我的钥匙看起来像这样 -

@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;

}

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

4

1 回答 1

1

你可以strtok改用。strtok确实,你现在在做什么。它在遇到分隔符时拆分字符串

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

可以通过以下方式转换为某种int类型strtoul/strtoull

uint64_t i = strtoul(next_dot, 0, 10);
于 2013-11-14T20:31:17.173 回答