首页
学习
活动
专区
圈层
工具
发布

C++实现字符串分割函数split()「建议收藏」

使用strtok_r()完成分割 strtok是一个线程不安全的函数,因为它使用了静态分配的空间来存储被分割的字符串位置,线程安全的函数是strtok_r()。...char *strtok_r(char *str, const char *delim, char **saveptr); strtok_r函数是strtok函数的可重入版本。...char **saveptr参数是一个指向char *的指针变量,用来在strtok_r内部保存切分时的上下文,以应对连续调用分解相同源字符串。...一系列不同的字符串可能会同时连续调用strtok_r进行提取,要为不同的调用传递不同的saveptr参数。...strtok_r实际上就是将strtok内部隐式保存的this指针,以参数的形式与函数外部进行交互。由调用者进行传递、保存甚至是修改。

3.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【安全函数】Windows 安全分割利器:strtok_s () 详解

    strtok()一致的分隔符处理逻辑(跳过连续分隔符),降低迁移成本; 平台局限:本质是微软扩展,仅在 Windows 平台(MSVC、MinGW-w64)支持,Linux/macOS 等类 Unix 系统需用strtok_r...()替代(可通过条件编译兼容:#ifdef _WIN32 使用strtok_s #else 使用strtok_r #endif); 需保留连续分隔符空串:同strtok(),strtok_s()默认跳过连续分隔符...(C标准可重入版) #define STRTOK(str, delim, ctx) strtok_r(str, delim, ctx) #endif // 统一调用接口 char *ctx = NULL...核心要点回顾: 线程安全是strtok_s()的核心优势,依赖独立context实现多线程并行分割; 仅 Windows 支持,跨平台需通过条件编译与strtok_r()兼容; 使用时需注意context...(参数顺序与strtok_s一致) #define SAFE_STRTOK(str, delim, ctx) strtok_r(str, delim, ctx) #endif // 统一调用 char

    6510
    领券