对字符串进行标记是编程中的基本操作。然而,当使用像 strtok() 这样需要 char* 字符串的 C 函数时,直接标记 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中文网其他相关文章!