首页  >  文章  >  后端开发  >  如何使用 strtok() 标记 C 字符串而不出现错误?

如何使用 strtok() 标记 C 字符串而不出现错误?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-06 13:03:02595浏览

How to Tokenize a C   String Using strtok() Without Errors?

使用 strtok() 标记 C 字符串

要使用带有 std::string 的 strtok() 标记字符串,必须进行转换将其转换为 C 样式字符串 (char)。但是,使用 str.c_str() 直接将 std::string 转换为 const char 可能会导致错误。

解决方案 1:使用 istringstream

另一种方法是使用 istringstream 从 std::string 读取。下面是一个示例:

#include <iostream>
#include <string>
#include <sstream>

int main() {
    std::string myText("some-text-to-tokenize");
    std::istringstream iss(myText);
    std::string token;
    while (std::getline(iss, token, '-')) {
        std::cout << token << std::endl;
    }
    return 0;
}

此方法只是循环遍历 istringstream,根据 getline() 中指定的分隔符将字符串分解为标记。

解决方案 2:使用 Boost工具包

或者,可以使用 Boost 工具包的 tokenizer 类来获得更大的灵活性和对标记化参数的控制。这是使用 Boost 的示例:

#include <iostream>
#include <string>
#include <boost/tokenizer.hpp>

int main() {
    std::string myText("some-text-to-tokenize");
    boost::tokenizer<> tokenizer(myText, "-");
    for (auto token : tokenizer) {
        std::cout << token << std::endl;
    }
    return 0;
}

以上是如何使用 strtok() 标记 C 字符串而不出现错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn