C++:用多个定界符拆分字符串并在结果中保留定界符?

标签 c++ c string stl

有没有一种好方法可以用多个定界符拆分字符串(在 C 或 C++ 中),同时将定界符保留为拆分字符串的一部分?我发现这样做的唯一方法是使用正则表达式,我宁愿不必为了这样做而引入另一个库? (我对字符串使用 STL,而不是使用 Boost)。

最佳答案

没有正则表达式,虽然我不确定它是更快还是更慢:

vector<string> split(string& stringToSplit)
{
    vector<string> result;
    size_t pos = 0, lastPos = 0;
    while ((pos = stringToSplit.find_first_of(";,|", lastPos)) != string::npos)
    {
        result.push_back(stringToSplit.substr(lastPos, pos-lastPos+1));
        lastPos = pos+1;
    }
    result.push_back(stringToSplit.substr(lastPos));
    return result;
}

关于C++:用多个定界符拆分字符串并在结果中保留定界符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17476224/

相关文章:

c++ - 如何读写 Qt 集合类

c++ - 允许销毁 std::fstream 是否会关闭相关文件?

php - 提取出现在几个禁用字符之一之前的字符

java - 如何将 String 转换为 BigInteger 表示并返回 Java?

python - 从文本文件中解码字符串

c# - 如何反编译c++ dll?

c++ - 如何在 C++ 中初始化对象的空数组?

c - realloc 将对旧指针做什么

c - C语言中如何遍历二维数组对角线?

无法理解 K&P 编程实践一书中的 csvgetline.c 函数中解释的 char **