对于学习体验,这是我最终用来解析数据到地图中的代码。您可以使用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