std::string_split fixed to work with empty delimiter