在XML中有时候会出现类似键值对的字符串比如说name=" ",为了进一步深化对XML文件的读取,所以写了个函数,用于读取这样的字符串。
//键值对或者字典 //假设都是以逗号分割,其他的分割也行 //key=value,key=value或者是key:value,key:value vector<string> KeyValue(string& str) { vector<string> tempStr; int tempStrIndex = 0; EarseInSpace(str);//先清除里面的空格,这是假定传进来的字符串没有/r/n这种的 vector<string> listStr=split(str,","); //先按照,分割 int pos=0; for (int index = 0; index < listStr.size(); index++) { pos = listStr.at(index).find("=", 0); if (pos == -1) { pos= listStr.at(index).find(":", 0); if (pos == -1) { cout << "当前字符串里没有:或者=号,前往下一个字符串" << endl; tempStr.push_back(listStr.at(index).substr(pos + 1, listStr.at(index).size() - pos - 1)); continue; } else { tempStr.push_back(listStr.at(index).substr(pos + 1, listStr.at(index).size() - pos - 1)); } } else { tempStr.push_back(listStr.at(index).substr(pos + 1, listStr.at(index).size() - pos - 1)); } } return tempStr; } int main() { string str("value:132,value=26,valuekk,value = \"你好\""); vector<string> out = KeyValue(str); for (int i = 0; i < out.size(); i++) cout << out.at(i) << " " << endl; return 0; }
结果如下:
继续前进。