使用 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中文网其他相关文章!