You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不依赖Boost库,按指定字符组合分割字符串为string vector?

不用Boost库实现字符串按指定分隔符分割

没问题,咱们完全可以用C++标准库来实现这个需求,不需要依赖Boost这类外部库。下面给你两种实用的方案:

方法一:手动遍历分割(灵活可控)

这种方法能让你完全掌控分割逻辑,适合需要自定义规则的场景:

#include <vector>
#include <string>

std::vector<std::string> split_string(const std::string& str, char delimiter) {
    std::vector<std::string> result;
    std::string current_substr;
    
    for (char c : str) {
        if (c == delimiter) {
            // 遇到分隔符,将当前累积的子串加入结果
            result.push_back(current_substr);
            current_substr.clear();
        } else {
            current_substr += c;
        }
    }
    // 别忘了添加最后一段(字符串末尾无分隔符的情况)
    result.push_back(current_substr);
    
    return result;
}

// 使用示例
int main() {
    std::string myString = "This is \n a test. Let's go on. \n Yeah.";
    std::vector<std::string> myVector = split_string(myString, '\n');
    // 此时myVector就是你想要的目标结果
    return 0;
}

这个函数会逐个字符遍历输入字符串,遇到指定的分隔符(这里是'\n')就把当前积累的子串存入vector,最后再把剩余的子串补充进去,完全匹配你的需求。

方法二:利用标准库的stringstream和getline

C++的<sstream>库提供的getline函数刚好能按指定字符分割字符串,代码更简洁:

#include <vector>
#include <string>
#include <sstream>

std::vector<std::string> split_string(const std::string& str, char delimiter) {
    std::vector<std::string> result;
    std::stringstream ss(str);
    std::string substr;
    
    // getline会读取直到遇到delimiter,并且自动跳过delimiter本身
    while (std::getline(ss, substr, delimiter)) {
        result.push_back(substr);
    }
    
    return result;
}

// 使用示例
int main() {
    std::string myString = "This is \n a test. Let's go on. \n Yeah.";
    std::vector<std::string> myVector = split_string(myString, '\n');
    return 0;
}

std::getline在这里会每次从stringstream中读取字符,直到碰到'\n',然后把读取到的内容(不包含'\n')存入substr再添加到vector里。循环结束后,就能得到你需要的结果。

两种方法都能完美实现你要的效果,对比Boost的实现,标准库方案更轻量,不需要额外依赖。

内容的提问来源于stack exchange,提问作者user3596335

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 10:03:57