本文共 1197 字,大约阅读时间需要 3 分钟。
统一分号格式处理
为了确保代码中的分号格式统一,避免中英文分号混淆,我们对源字符串进行处理:
首先,将英文分号"
```cppstr.Replace(_T(";"), _T(";"));_T(";")"替换为中文分号_T(";"):
接下来,我们遍历字符串,找出所有的中文分号位置,并将字符串分割为多个部分:
初始化两个变量int bj = 0;和int ej = 0;,其中bj表示当前分割的起始位置,ej表示当前分割的结束位置。
在while (ej = str.Find(_T(";"), bj))循环中,我们不断查找从bj位置开始的下一个中文分号:
如果找到的分号位置ej小于1,表示没有更多的分号了:
if (ej < 1){ if (bj <= str.GetLength()) // 检查是否是末尾没有加分号的情况 { temp = str.Mid(bj, str.GetLength()); v1.push_back(temp); } break;} 如果找到分号,取出从bj到ej - bj的子字符串,并将其添加到v1容器中:
temp = str.Mid(bj, ej - bj);v1.push_back(temp);
然后更新bj为ej + 1,继续查找下一个分号的位置:
bj = ej + 1;ej = 0;
所有分割后的字符串片段都存储在v1容器中,供后续处理使用:
vectorv1;
在分割循环结束后,需要处理可能的末尾情况:
如果最后一个字符没有分号,取出从bj到字符串末尾的内容,并添加到v1容器中:
if (bj <= str.GetLength()){ temp = str.Mid(bj, str.GetLength()); v1.push_back(temp);} 整个处理流程可以总结为以下步骤:
代码主要由以下几个部分组成:
str.Replace(_T(";"), _T(";")):替换英文分号为中文分号while (ej = str.Find(_T(";"), bj)):查找分号位置循环if (ej < 1):判断是否为末尾情况temp = str.Mid(bj, str.GetLength()):取末尾子字符串v1.push_back(temp):存储分割后的片段bj = ej + 1:更新起始位置ej = 0:重置分号位置整个处理逻辑清晰,能够有效分割字符串,确保分号格式统一。
```转载地址:http://liyc.baihongyu.com/