使用rapidxml读写xml文件时,xml里面存放的是字符串。对里面的数值引用的时候,需要将其(字符串)0转换为数值。
CharToFloat(char* str, vector<float>& f)。函数将字符串按照逗号分隔,并存储在vector中。直接上代码。
注:代码都是本人亲自使用过的,暂时没有发现问题。
将字符串按照逗号分隔,并存储为int类型
xml文件 value形如:<value>0,1,0,4</value>
void CityItem2::CharToInt(char* str, vector<int>& i)
{
char * numberstr = strtok(str, ",");
while (numberstr != NULL)
{
i.push_back(atoi(numberstr));
numberstr = strtok(NULL, ",");
}
}
将字符串按照逗号分隔,并存储为float类型
xml文件 value形如:<value>0,-0.548435,0,0.836193</value>
void CityItem2::CharToFloat(char* str, vector<float>& f)
{
char * numberstr = strtok(str, ",");
while (numberstr != NULL)
{
f.push_back((float)atof(numberstr));
numberstr = strtok(NULL, ",");
}
}
将字符串去掉两端大括号,按照逗号分隔,并存储为float类型
xml文件 value形如:<value>{0,-0.548435,0,0.836193}</value>
void CityItem2::CharBraceToFloat(char* c, vector<float>&f)
{
string s, s1;
//去掉大括号{}的字符串保存在s1
s = c;
s1.resize(s.length() - 2);
for (size_t i = 0, j = 0; i < s.length(); i++)
{
if (s[i] != '{'&&s[i] != '}')
{
s1[j] = s[i];
j++;
}
}
//去掉逗号
char * numberstr = strtok((char*)s1.c_str(), ",");
while (numberstr != NULL)
{
f.push_back(atof(numberstr));
numberstr = strtok(NULL, ",");
}
}