For following input string:VISITOR_INFO1_LIVE=USv90B-7CzI; LOGIN_INFO=e486e37a395be3f0e3b3237d090a6829c1oAAAB7IjQiOiAiREVMRUdBVEVEIiwgIjciOiAwLCAiMSI6IDEsICIzIjogMjAxMTk0MTMwNiwgIjgiOiA2MDgwMTg0NTEzNjQsICIxMCI6IDIzOTYyMTEyODczNH0=; PREF=f5=30;HSID=AHuJQBOVR0lQoRt_3; APISID=QaParXGsQcEPCzKg/A1smCfYrfMjxvfEPT; YSC=Vm3Amq5loFM;I want to remove all the patterns that contains *SID (HSID,APISID here) upto ';'. I also want to remove substring LOGIN_INFO= ....;So, output string should be:VISITOR_INFO1_LIVE=L80EDuHCEF8; PREF=f5=30;` const char *str =VISITOR_INFO1_LIVE=USv90B-7CzI; LOGIN_INFO=e486e37a395be3f0e3b3237d090a6829c1oAAAB7IjQiOiAiREVMRUdBVEVEIiwgIjciOiAwLCAiMSI6IDEsICIzIjogMjAxMTk0MTMwNiwgIjgiOiA2MDgwMTg0NTEzNjQsICIxMCI6IDIzOTYyMTEyODczNH0=; PREF=f5=30;HSID=AHuJQBOVR0lQoRt_3; APISID=QaParXGsQcEPCzKg/A1smCfYrfMjxvfEPT; YSC=Vm3Amq5loFM;  char *Cookie = NULL; cout << original string is:\n << str << \n; int len = strlen(str)+1; cout << length of original string is :  << len << \n; Cookie = new char[strlen(str)]; strncpy(Cookie,str,len); char *p1 = strstr(Cookie,LOGIN_INFO); char *p2 = NULL; if(p1){      p2 = strstr(p1,;)+1;      while(*p2 == ' ') p2++; } if(p1 && p2)      memmove(p1,p2,strlen(p2)+1); char *ID = strstr(Cookie,SID);  while( ID != NULL){      char *start_pos = NULL, *end_pos = NULL;          while((*ID != ';') && (*ID != Cookie[0]) && (*ID != ' ')){           --ID;      }      if(*ID == Cookie[0]) start_pos = ID;      else start_pos = ID+1;      end_pos = strstr(start_pos,;)+1;      while(*end_pos == ' ')           end_pos++;      memmove(start_pos,end_pos,strlen(end_pos)+1);                                       //  }       /*else           std::cout << does not find substr  << \n;*/    //  cout << modified string is : << Cookie << \n;      ID = strstr(Cookie,SID); }      //cout << final modified string is :  << Cookie << \n; char *Cookie_modified = NULL; const char *pch = strstr(Cookie,PREF); if(pch != NULL){      const char *append = &f2=8000000;      int len = strlen(Cookie) + strlen(append) + 1;      Cookie_modified = new char[len];      strncpy(Cookie_modified,Cookie,len);      Cookie_modified[len-1] = '\0';      char *p = strstr(Cookie_modified,PREF);      strncpy(p+(strlen(p)),append,strlen(append));      cout << modified Cookie is :  << Cookie_modified << \n;  //    cout << length of modified cookie is :  << strlen(Cookie_modified) << \n; } else{      cout << do not find reference:  << \n;      const char *append = ;PERF=f2=8000000;      int len = strlen(Cookie) + strlen(append) + 1;      Cookie_modified = new char[len];      Cookie_modified[len-1] = '\0';      strcat(Cookie_modified,Cookie);      strcat(Cookie_modified,append);      cout << case 2: modified Cookie is:  << Cookie_modified << \n; } delete[] Cookie; delete[] Cookie_modified;      return 0;
Substring erase with certain pattern
c++;strings