天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 140|回复: 0

字符串操作

[复制链接]
  • TA的每日心情
    开心
    昨天 06:36
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    105

    主题

    11

    回帖

    1308

    积分

    管理员

    积分
    1308
    QQ
    发表于 2024-3-6 11:47:14 | 显示全部楼层 |阅读模式
    1. void StringUtil::Split(const CString& text, const ACHAR* separator, std::vector<CString>& result, bool bAddEmptyStr)
    2. {
    3.         int prev = 0, current = 0;// 初始化两个指针,prev(前一个索引号)和current(当前索引号),都设置为0  
    4.         CString strCopyTxT = text;// 创建一个text的副本,并去除其右边的空格  
    5.         strCopyTxT.TrimRight(采用T(" "));
    6.         if (strCopyTxT.Find(separator,0)<0)//如果在副本中找不到分隔符,未找到返回-1,那么整个副本就是一个单独的字符串
    7.         {
    8.                 if (strCopyTxT.GetLength()>0)
    9.                 {
    10.                         result.push采用back(strCopyTxT);// 如果副本的长度大于0,则将其添加到字符串容器中  
    11.                 }
    12.                 // 如果传入的字符串长度为0,啥也不添加
    13.                 return;
    14.         }
    15.         // 以下为至少发现一个分隔符,获得字符串总长度
    16.         int length = strCopyTxT.GetLength();// 初始化一个标志位,表示是否已经找到了所有的分隔符
    17.         bool bExit = false;
    18.         while (true)// 开启无限循环:注意循环中的break语句
    19.         {
    20.                 current = strCopyTxT.Find(separator, prev); // 在副本中查找分隔符,从prev指针的位置开始查找
    21.                 if (current == -1)// 到最后一组了
    22.                 {
    23.                         current = length;
    24.                         bExit = true;// 如果找不到分隔符,将整个字符串长度赋值current,标识退出变量为真
    25.                 }
    26.                 // 取最后一个分隔符到结尾的字符串,Mid见下注释
    27.                 CString item = strCopyTxT.Mid(prev, current - prev);
    28.                
    29.                 if (bAddEmptyStr || item.GetLength()>0)
    30.                 {   // 添加进容器的条件:每个提取的子字符串是否过滤0长度
    31.                         result.push采用back(item);// 如果bAddEmptyStr为true,或者子字符串的长度大于0,则将子字符串添加到结果列表中
    32.                 }
    33.                 if (bExit)
    34.                 {
    35.                         break;// 如果已经找到了所有的分隔符,那么跳出循环
    36.                 }
    37.                 prev = current + int(采用tcslen(separator)); // 将prev指针移动到当前分隔符的后面,以便在下一次循环中查找下一个分隔符  
    38.         }
    39. }
    40. // 合并字符串:传入字符串容器、分隔符,返回合并的字符串
    41. CString StringUtil::Join(const std::vector<CString>& items, const ACHAR *spearator)
    42. {
    43.         CString strResult;// 逐个拼接容器中的字符串
    44.         for (int i = 0; i < items.size();i++)
    45.         {
    46.                 strResult += items.at(i) + spearator;
    47.         }// 删除右侧的空字符
    48.         strResult.TrimRight(spearator);//调用'TrimRight'函数,从'strResult'的右侧删除所有的分隔符。这样做是为了避免在最后一个元素后面出现不必要的分隔符
    49.         return strResult;// 返回拼接好的字符串
    50. }
    复制代码

     

     

     

     

    字符串操作
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-11-1 08:13 , Processed in 0.125634 second(s), 25 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表