Paket splitten
-
hi leute,
ich will folgendes Paket splitten:
string str = "\003userid\001passwd\001";
deklarationen:
std::vector<std::string> buffer; const std::string TRENNER="\001";
ruf die die methode dann so auf:
server.Packetsplit(str, Trenner.c_str(), buffer);
im vector sollen dann diese infos stehen:
\003 an pos 1 ... = login-message
userid an pos2
passwd an pos3habt ihr nun nen vorschlag wie man den code etwas optimieren könnte? auch verhindern kann, dass man bei undef. paket nicht in den schleifen stecken bleibt...?
void Server::Packetsplit(const string str, const char* sep, vector<string> &stringvec) { if(str.length() != 0) { std::string str_; stringvec.push_back(str.substr(0, 1)); str_ = str.substr(1, str.length()); std::string::size_type a = 0, e; while ( (a = str_.find_first_not_of( sep, a)) != std::string::npos) { e = str_.find_first_of( sep, a); if (e != std::string::npos) { stringvec.push_back( str_.substr( a, e-a)); a = e + 1; } else { stringvec.push_back( str_.substr( a)); break; } } } }
cu