C++ 使用多个 strtok()

标签 c++ strtok

您好,我有以下文字:

htttp://zbw.eu/stw/descriptor/17782-1> htttp://www.w3.org/2004/02/skos/core#inScheme> htttp://zbw.eu/stw> .

htttp://aims.fao.org/aos/agrovoc/c_2678> htttp://www.w3.org/2004/02/skos/core#exactMatch> htttp://zbw.eu/stw/descriptor/15918-5> . #komentar k totte hlouposti

..以及当出现新行时标记化数据的功能:

    bool isCorrect(char* buffer){
    char* tok;

    tok = strtok( buffer,"\n");

    while(tok != NULL){         
        bool i = isTriple(tok);

        tok = strtok(NULL, "\n");
    }

    return true;
}

当我有单独的 token 时,我想对它进行更多的 token 化,所以 tok 被发送到函数 isTriple(char * token):

    bool isTriple(char* token){
    char* tok;

    tok = strtok(token, " ");

    while(tok != NULL){
        tok = strtok(token, " ");
    }

    return true;
}

在此函数中,当出现空格时,输入标记被分成更多的标记。在这个函数中,我希望将这些新标记发送到另一个函数以相乘并创建新的更小的标记..

问题是,当我调用 isTriple() 时,它不会创建新的更小的标记。突然它卡住了。

谁能告诉我,我哪里错了?

谢谢。

最佳答案

在第一次调用时,函数 strtok 需要一个 C 字符串作为参数,其第一个字符用作扫描标记的起始位置。在后续调用中,该函数需要一个空指针,并使用最后一个标记结束后的位置作为扫描的新起始位置。

所以你不应该对多个输入字符串“同时”使用这个函数。

参见 http://www.cplusplus.com/reference/cstring/strtok/获取详细说明。

关于C++ 使用多个 strtok(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22897606/

相关文章:

c++ - 指向基类数组的指针,用派生类填充

c++ - 跨文件的代码组织,这些文件必须处理模板功能和内联

c - 段错误和地址清理器

C - 另一个 strtok() 和 free() 问题

c - 如何使用自定义函数 split() 将句子拆分为单个单词?

c - 仅当我将分隔符放在最后一项之后时,使用 strtok 才有效

c++ - ActiveX OCX 在 Release模式下构建时可以注册,但在 Debug模式下不能注册

c++ - MSVC 2008 16 字节结构成员对齐异常

c++ - 用模板初始化的 N 维 std::array

c - 如何读取文本文件中的逗号分隔行并将其字段插入到结构指针数组中?