std::string 字符串切割
在很多字符串类库里都实现了split函数。不过在std里没有实现。在这里拿出几个:
1. 用单字符作为分隔
1 #include <string> 2 #include <vector> 3 using namespace std; 4 5 vector<string> split(string strtem,char a) 6 { 7 vector<string> strvec; 8 9 string::size_type pos1, pos2; 10 pos2 = strtem.find(a); 11 pos1 = 0; 12 while (string::npos != pos2) 13 { 14 strvec.push_back(strtem.substr(pos1, pos2 - pos1)); 15 16 pos1 = pos2 + 1; 17 pos2 = strtem.find(a, pos1); 18 } 19 strvec.push_back(strtem.substr(pos1)); 20 return strvec; 21 }
2. 由多个分隔符来分隔:
1 std::vector<std::string> splitString(std::string srcStr, std::string delimStr, bool repeatedCharIgnored) 2 { 3 std::vector<std::string> resultStringVector; 4 std::replace_if(srcStr.begin(), srcStr.end(), 5 [&](const char& c){if (delimStr.find(c) != std::string::npos){ return true; } else{ return false; }}/*pred*/, delimStr.at(0)); 6 //将出现的所有分隔符都替换成为一个相同的字符(分隔符字符串的第一个) 7 size_t pos = srcStr.find(delimStr.at(0)); 8 std::string addedString = ""; 9 while (pos != std::string::npos) { 10 addedString = srcStr.substr(0, pos); 11 if (!addedString.empty() || !repeatedCharIgnored) { 12 resultStringVector.push_back(addedString); 13 } 14 srcStr.erase(srcStr.begin(), srcStr.begin() + pos + 1); 15 pos = srcStr.find(delimStr.at(0)); 16 } 17 addedString = srcStr; 18 if (!addedString.empty() || !repeatedCharIgnored) { 19 resultStringVector.push_back(addedString); 20 } 21 return resultStringVector; 22 }
----------------陌上阡头,草长莺飞-----------------
https://www.cnblogs.com/tyche116/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构