未在此范围内声明strtok

未在此范围内声明strtok

我试图将我的实际键拆分为点,然后在将其拆分为点后提取所有字段。

我的 key 看起来像这样-

t26.example.1136580077.colox

下面是我印象中的代码,它应该可以正常工作。但是无论如何,每当我编译这段代码时,我总会得到-
 error: âstrtok_sâ was not declared in this scope

下面是我的代码
if(key) {
    vector<string> 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_s会更加高效并且线程安全。

最佳答案

#ifndef _MSC_VER
inline
char* strtok_s(char* s, const char* delm, char** context)
{
        return strtok_r(s, delim, context);
}
#endif

关于c++ - 未在此范围内声明strtok_s,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20210468/

10-12 19:49