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 pos3

    habt 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 😃


Log in to reply