在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;
}
结果如下:
继续前进。