首页 >后端开发 >C++ >如何使用 C 函数对 `std::string` 进行标记?

如何使用 C 函数对 `std::string` 进行标记?

Barbara Streisand
Barbara Streisand原创
2024-11-07 07:02:02556浏览

How to Tokenize a `std::string` with C Functions?

使用 C 函数对 std::string 进行标记

对字符串进行标记是编程中的基本操作。然而,当使用像 strtok() 这样需要 char* 字符串的 C 函数时,直接标记 std::string 可能会遇到挑战。

strtok() 与 std::string

要将 strtok() 与 std::string 结合使用,一种选择是使用 .c_str() 将其转换为 const char*。然而,这可能并不总是理想的,因为它提供了字符串的只读表示。

替代方法

更合适的解决方案是利用 std::istringstream 而不是 strtok( )。 std::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;
    }
}

此代码从 std::string 创建一个 std::istringstream 并从中读取标记,直到遇到指定的分隔符(在本例中为“-”)。

其他选项

对于更高级的标记化功能,Boost 等库提供了全面的解决方案,与 strtok() 相比,它们提供了更大的灵活性和功能。

以上是如何使用 C 函数对 `std::string` 进行标记?的详细内容。更多信息请关注PHP中文网其他相关文章!

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