C/C++教程

C++杂谈之读取字符串中的键值对

本文主要是介绍C++杂谈之读取字符串中的键值对,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

在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;
}

结果如下:

 继续前进。

这篇关于C++杂谈之读取字符串中的键值对的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!