首页 >后端开发 >C++ >如何在不使用'strtok()”的情况下标记'std::string”?

如何在不使用'strtok()”的情况下标记'std::string”?

Susan Sarandon
Susan Sarandon原创
2024-11-07 18:34:03991浏览

How to Tokenize a `std::string` Without Using `strtok()`?

使用 strtok 标记 std::string

可以使用多种方法来标记 std::string。一种常见的方法是使用 C 函数 strtok(),它将字符数组作为输入,并根据指定的分隔符将其分解为标记。然而,std::string 对象不能直接传递给 strtok(),因为它们不指向字符数组。

为了克服这个限制,我们可以使用另一种方法来标记 std::string。其中一种方法是使用 istringstream 对象,该对象可以通过将 std::string 传递给其构造函数来创建。然后,istringstream 对象可用于使用 getline() 函数从字符串中读取标记,该函数将分隔符作为第二个参数。

#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;
}

在此示例中,istingstream 对象用于读取std::string 将“some-text-to-tokenize”转换为一系列标记,由“-”字符分隔。 getline() 函数用于从字符串中提取每个标记,然后将标记打印到控制台。

使用 istringstream 的另一种方法是使用 Boost.Tokenizer 等实用程序,它提供一种更灵活和可定制的字符串标记方法。然而,istingstream 方法通常足以满足基本的标记化需求。

以上是如何在不使用'strtok()”的情况下标记'std::string”?的详细内容。更多信息请关注PHP中文网其他相关文章!

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