对字符串进行标记是编程中的基本操作。然而,当使用像 strtok() 这样需要 char* 字符串的 C 函数时,直接标记 std::string 可能会遇到挑战。
要将 strtok() 与 std::string 结合使用,一种选择是使用 .c_str() 将其转换为 const char*。然而,这可能并不总是理想的,因为它提供了字符串的只读表示。
更合适的解决方案是利用 std::istringstream 而不是 strtok( )。 std::istringstream 允许对 std::string 进行基于流的标记化。这是一个示例:
#include#include #include int main() { std::string myText("some-text-to-tokenize"); std::istringstream iss(myText); std::string token; while (std::getline(iss, token, '-')) { std::cout 此代码从 std::string 创建一个 std::istringstream 并从中读取标记,直到遇到指定的分隔符(在本例中为“-”)。
其他选项
对于更高级的标记化功能,Boost 等库提供了全面的解决方案,与 strtok() 相比,它们提供了更大的灵活性和功能。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3