std::basic_string < Elem, Traits > cell_decode(std::basic_string < Elem, Traits > Str, Elem Sep_, Elem Esc){ if(Str.size()>1 && Str.front()==Esc && Str.back()==Esc){ Str.erase(Str.begin()); Str.pop_back(); bool EscFlag=false; for(auto itr = Str.begin(); itr != Str.end(); ++itr){ if(*itr == Esc){ if(EscFlag){ itr = Str.erase(itr); --itr; EscFlag = false; } else{ EscFlag = true; } } else{ EscFlag = false; } } } return std::move(Str); }