2013-11-14 28 views
0

我想分割我的實際關鍵點,然後提取所有的領域後分裂它點。將字符串拆分爲點並從C++中提取所有字段?

我的鑰匙看起來像這樣的東西 -

@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

「提取」字段是一兩件事要做,但你想要做什麼結果呢?存儲在什麼地方? – usr2564301

+0

哎呀抱歉是,將它存儲在某處..讓我更新問題.. – AKIWEB

+0

然後它是一個重複:http://stackoverflow.com/a/237280/912757 – Nil

回答

1

您可以改用strtokstrtok確實,你現在正在做什麼。它分割字符串,當它遇到一個分隔字符

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

一些int類型轉換可以strtoul/strtoull

uint64_t i = strtoul(next_dot, 0, 10); 
+0

謝謝你的例子。現在我想知道如何從中提取單個字段?請原諒我對C++的無知..我最近開始使用它。謝謝您的幫助。 – AKIWEB

+0

你是什麼意思提取字段?使用'first_dot'或'next_dot',您已經可以訪問第一個和第二個字段。 –

+0

我看..現在它是有道理的,現在我能夠提取第一和第二場..我用我現在使用的代碼更新我的問題。同樣,我需要提取第三和第四場以及? – AKIWEB