C++分割字符串的方法

第一种:利用getline分割(只能按某个字符分割)

函数原型
istream& getline (istream& is, string& str, char delim);
istream& getline (istream& is, string& str);
参数解释
  • is:输入流对象,例如 std::cin 用于从标准输入(键盘)读取数据,也可以是文件输入流 std::ifstream 等。
  • str:用于存储读取到的一行文本的 std::string 对象。
  • delim:可选参数,指定行结束的分隔符,默认值是换行符 '\n'

废话少说,直接上分割代码样例:

std::vector<std::string> splitString(const std::string& input,const char& delimiter) {
    std::vector<std::string> tokens;
    std::istringstream iss(input);
    std::string token;
    // 循环调用 getline 函数,按指定分隔符分割字符串
    while (std::getline(iss, token, delimiter)) {
        tokens.push_back(token);
    }
    return tokens;
}

第二种:利用find和substr分割

无废话,直接上代码:

std::vector<std::string> splitString(const std::string& input, const std::string& delimiter) {
    std::vector<std::string> tokens;
    size_t start = 0;
    size_t end = input.find(delimiter);
 
    while (end != std::string::npos) {
        // 提取从 start 到 end 之间的子字符串
        //substr(pos,len)返回从指定位置pos开始,长度为len的字串
        tokens.push_back(input.substr(start, end - start));
        // 更新 start 为分隔字符串结束的位置
        start = end + delimiter.length();
        // 查找下一个分隔字符串的位置(从位置start开始查找子串delimiter,返回第一次出现的位置)
        end = input.find(delimiter, start);
    }
 
    // 添加最后一个分隔字符串之后的子字符串(sunstr(start)返回从位置start到末尾的子串)
    tokens.push_back(input.substr(start));
    return tokens;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值