字符换分割(正则表达式)<regex>-c++

主要使用regex,正则表达式进行,简单好用!

#include <iostream>
#include <vector>
#include <iterator>
#include <regex>

// std::wstring版本
std::vector<std::wstring> ws_split(const std::wstring& in, const std::wstring& delim) {
std::wregex re{ delim };
return std::vector<std::wstring> {
std::wsregex_token_iterator(in.begin(), in.end(), re, -1),
std::wsregex_token_iterator()
};
}
// c string版本
std::vector<std::string> c_split(const char* in, const char* delim) {
std::regex re{ delim };
return std::vector<std::string> {
std::cregex_token_iterator(in, in + strlen(in),re, -1),
std::cregex_token_iterator()
};
}
// 支持wchar_t宽字符集的版本
std::vector<std::wstring> wc_split(const wchar_t* in, const wchar_t* delim) {
std::wregex re{ delim };
return std::vector<std::wstring> {
std::wcregex_token_iterator(in, in + wcslen(in),re, -1),
std::wcregex_token_iterator()
};
}
// 上面的s_split和ws_split可以统一用模板来实现
template<typename E,
typename TR = std::char_traits<E>,
typename AL = std::allocator<E>,
typename _str_type = std::basic_string<E, TR, AL>>
std::vector<_str_type> bs_split(const std::basic_string<E, TR, AL>& in, const std::basic_string<E, TR, AL>& delim) {
std::basic_regex<E> re{ delim };
return std::vector<_str_type> {
std::regex_token_iterator<typename _str_type::const_iterator>(in.begin(), in.end(), re, -1),
std::regex_token_iterator<typename _str_type::const_iterator>()
};
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

磊磊cpp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值