boundary 查找

#include <iostream>
#include <string>

std::string boundary="----DDDD-YYYY-ZZZZ-$$$$";
std::string first_boundary="--"+boundary+"\r\n\r\n";
std::string next_boundary="\r\n\r\n--"+boundary+"\r\n\r\n";
std::string last_boundary="\r\n\r\n--"+boundary+"--\r\n\r\n";

int main()
{
    int cnt = 0;
    std::string context = first_boundary + "11111111111111111" + next_boundary + "222222222222222" + last_boundary;
    auto iterHead = context.begin();
    auto iterTail = context.begin();
    std::size_t iterTailPos = context.rfind(*context.begin(), context.size() - 7);
    for (iterTail += iterTailPos ;context.end() != iterHead && context.end() != iterTail + 6 ; ++iterHead, ++iterTail)
    {   
         if (*iterHead == *iterTail)
         {
            ++cnt;
         }
         else
         {
             iterTailPos = context.rfind(*context.begin(), iterTailPos-1);
             if (0 >= iterTailPos)
             {
                 break;
             }
             else
             {
                 iterHead = context.begin();
                 iterTail = context.begin() + iterTailPos;
                 continue;
             }
         }
    }

    std::cout << "boundary["<< iterTailPos << "," << context.size() - 6  << "]:" << context.substr(iterTailPos, context.size() - 6) << std::endl;
    std::cout << "cnt:" << cnt << "," << context.size() - 6 - iterTailPos << std::endl;

    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值