void parseComplexStringToMap(const std::string &inputString, std::map &fillMap, const std::string &entryDelimiter, const std::string &keyValueDelimiter) { size_t lp = 0; while( true ) { size_t p = inputString.find( entryDelimiter, lp ); bool isLast = ( p == std::string::npos ); p += entryDelimiter.length(); std::string part = inputString.substr( lp, (isLast ? inputString.length() : ( p - lp - 1 ) ) ); size_t divider = part.find( keyValueDelimiter ); if( divider != std::string::npos ) { std::string key = part.substr(0, divider); std::string value = part.substr( divider + 1 ); std::pair keyValuePair( key, value ); fillMap.insert( keyValuePair ); } lp = p; if( isLast ) break; } }