在C++中字符串有两种,不过提取方式类似,具体如下:
一、以’\0’结束的字符数组。
对于以’\0’结束的字符数组,可以有如下两种方式:
1、通过自定义函数提取。
由于格式固定,所以可以通过计算提取。
void get_data(char *s, int &y, int &m, int &d)
{
int i=0;
y=0;
while(s[i]!= '-')
{
y=y*10+s[i]-'0';
i++;
}
i++;
m=0;
while(s[i]!='-')
{
m=m*10+s[i]-'0';
i++;
}
i++;
d=0;
while(s[i]!='\0')
{
d=d*10+s[i]-'0';
i++;
}
}
2、利用sscanf自动完成。
sscanf可以从字符串中格式化提取数据。
代码如下:
void get_data(char *s, int &y, int &m, int &d)
{
sscanf(s,"%d-%d-%d",&y,&m,&d);
}
二、string类字符串。
与字符数组类似,string类字符串也可以用类似方式实现。
1、通过自定义函数:
void get_data(string &s, int &y, int &m, int &d)
{
int i=0;
y=0;
while(s[i]!= '-')
{
y=y*10+s[i]-'0';
i++;
}
i++;
m=0;
while(s[i]!='-')
{
m=m*10+s[i]-'0';
i++;
}
i++;
d=0;
while(i<s.length())
{
d=d*10+s[i]-'0';
i++;
}
}
2、string类可以转为字符数组形式,所以一样可以用sscanf。
void get_data(string &s, int &y, int &m, int &d)
{
sscanf(s.c_str(),"%d-%d-%d",&y,&m,&d);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)