Might be cleaner with a param_separator std::string that's initialized to "?" and then set to "&" whenever a parameter is added.