C++ Serialize
-
Hallo Zusammen,
Ich arbeite derzeit an einem Opensource Chatserver der über ein PHP Interface Kommuniziert, beide haben eine MSESSION Anbindung die mir die Sessions auf einem anderen Server Managet.
Also Ich habe in PHP folgendes array:
$_browser_ = array("marjo" => "6","browser" => "IE");Dies speicher ich in der PHP Session von dem Benutzer, okay. Im Sourcecode sieht das So aus: _browser_|a:2:{s:5:"major";s:1:"6";s:7:"browser";s:2:"IE";} das ganze ist mit der Funktion (Serialize(string)) von PHP Serialized..
Wie kann ich nun den von PHP Serialized String in meinem C++ Projekt (GNU) wieder zu einem Array so wie es war Verarbeiten !?!?!?!
Wir haben das PHP Array:
$_browser_ = array( "marjo" => "6", "browser" => "IE");
Der Serialized String von dem Array sieht so aus:
_browser_|a:2:{s:5:"major";s:1:"6";s:7:"browser";s:2:"IE";}Zusammen Setzung von dem Serialized:
_browser_ = Name von meinem Array. | = Delimiter zwischen Name und dem String a:s2: = Sagt aus wieviele Daten in dem Array sind (major, browser); { = Content Anfang s:5:"major"; = sagt aus wie lang die Zeichen folge ist und wie das item heißt (major = 5); s:1:"6"; = sagt aus Wie lang die Zeichenfolge ist und was drin steht (6 = 1); s:7:"browser"; = sagt aus wie lang die Zeichen folge ist und wie das item heißt (browser = 7); s:2:"IE"; = sagt aus wie lang die Zeichenfolge ist und was drin steht (IE = 2);
Aber wie bastel ich mir ne Funktion die das ganze mir als array wieder zusammen setzt??
Sany.
-
Ich könnte mir vorstellen das dir hier eine std::map<std::string, std::string> etwas bringen könnte. Hier kannst du dann auch in etwa genauso auf das Array zugreifen wie in PHP.
#include <iostream> #include <string> #include <map> using namespace std; int main() { map<string, string> array; array["browser"] = "IE"; array["major"] = "6"; cout<<array["browser"]<<endl; return 0; }
-
Also entweder versteh ich dich falsch oder du mich :p
Also ich will aus dem Serialized String der mir vorher ja nicht bekannt ist, ein Array in C++ wieder zusammen basteln!
-
Doch, er hat recht.
#include <map> typedef map<std::string,std::map<std::string,std::string> > arr_map; arr_map array; //globales array, wo du alles reinspeicherst void to_arr(string input) { //wurstel dir den php-string auseinander und hau ihn dann in die map, z.B.: //map<std::string,std::string>x; //string name; //füllst du mit dem name //int arr_size; //Wie viel elemente im Namen //string sub; //string content; //for(int i=0,i<arr_size,++1= //{ //fülle sub und content //x[sub]=content; //}; //array[name]=x; };
-
Ah Okay, Dann hab ich's jetzt verstanden.
Bin wohl etwas auf der Leitung gesessen
Dann müsste Ich mir nur noch nen Passenden Parser dazu coden richtig?