bool split(const std::string& s, char delimiter, vector<string>& tokens)
{
std::string token;
std::istringstream tokenStream(s);
while (std::getline(tokenStream, token, delimiter)) {
if (!token.empty()) {
tokens.push_back(token);
}
}
return true;
}