strtok vs istringsteam по расщеплению строк?

Я пытаюсь разбить мой фактический ключ на точку, а затем извлечь все поля после разделения его на точку.

Мой ключ был бы похож на что-то такое –

t26.example.1136580077.colox 

Ниже приведен код, который у меня был на показе, он должен работать нормально, но после этого я понял, что это только для окон, и я запускаю свой код на ubuntu, и по этой причине я всегда получаю –

  error: âstrtok_sâ was not declared in this scope 

Ниже мой код

 if(key) { vector res; char* p; char* totken = strtok_s(key, ".", &p); while(totken != NULL) { res.push_back(totken); totken = strtok_s(NULL, ".", &p); } string field1 = res[0]; // this should be t26 string field2 = res[1]; // this should be example uint64_t field3 = atoi(res[2].c_str()); // this should be 1136580077 string field4 = res[3]; // this should be colox cout<<field1<<" "<<field2<<" "<<field3<<" "<<field4<<endl; } 

Я запускаю Ubuntu 12.04, а версия g ++ –

 g++ (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3 

Есть ли способ сделать то же самое, используя простой strtok, поскольку я не хочу использовать istringstream поскольку strtok будет более эффективным по сравнению с istringstream ..