對於學習體驗,這是我最終用來解析數據到地圖中的代碼。您可以使用web_parse_resurn.err查看是否有錯誤,或將其用於特定的錯誤代碼。
struct web_parse_return {
map<int,string> parsedata;
int err;
};
web_parse_return* parsewebstring(char* escapechar, char* input, int tokenminimum) {
int err = 0;
map<int,string> datamap;
if(input == "MISSING_INFO") { //a server-side string for data left out in the call
err++;
}
else {
char* nTOKEN;
char* TOKEN = strtok_s(input, escapechar,&nTOKEN);
if(TOKEN != 0) { //if the escape character is found
int tokencount = 0;
while(TOKEN != 0) {//since it finds the next occurrence, keep going
datamap.insert(pair<int,string>(tokencount,TOKEN));
TOKEN = strtok_s(NULL, escapechar,&nTOKEN);
tokencount++;
}
if(tokencount < tokenminimum) //check that the right number was hit
err++; //other wise, up the error count
}
else {
err++;
}
}
web_parse_return* p = new web_parse_return; //initializing a new struct
p->err = err;
p->parsedata = datamap;
return p;
}
你應該看看正則表達式 - 他們會讓你定義一套好的規則來檢索特定的模式。 – Pyrce 2012-08-10 18:49:47
Boost庫有一些非常漂亮的東西,比如'boost :: split'和'boost :: regex',你可能會覺得很有用。一些編譯器也支持新的C++ 11'std :: regex'等。如果您正在處理XML soap請求和響應,則TinyXML或其他XML解析器可能會幫助您。 – AJG85 2012-08-10 19:30:27