首页 / C++ / C++从身份证号获取生日
C++从身份证号获取生日
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++从身份证号获取生日,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2295字,纯文字阅读大概需要4分钟。
内容图文
![C++从身份证号获取生日](/upload/InfoBanner/zyjiaocheng/606/d782f1ab88fe40888b95439d9e1e3ec1.jpg)
%与/
众所周知,编程语言里有一个’%'运算符,和数学里的%不同,它是用来取余数的,请看下面程序:
#include<iostream>
using namespace std;
int main()
{
cout << "10 / 3 = " << 10 / 3 << "......" << 10 % 3 << endl;
return 0;
}
得到的输出是:
10 / 3 = 3......1
--------------------------------
Process exited after 0.4385 seconds with return value 0
请按任意键继续. . .
(Dev C++)
从这里可以看出,10 / 3 = 3.333…的小数点后半部分没了,这是因为int只读取到第一个不是数字的数,而10 % 3很明显就是10 - int(10 / 3) * 3
以300000200001010000为例,首先得把300000去掉。
去除
很明显,我们只要后面的,所以应该300000200001010000 % 100000000000,得到余数200001010000,然后我们只要前面的,所以应该200001010000 / 10000得到20000101,这样,就完成了大半。
然后制作函数getBirthdayNumberFromID()
long getBirthdayNumberFromID(long id)
{
long a = id % 1000000000000;
long b = a / 10000;
return b;
}
储存
紧接着,我们要对其进行储存。
struct Birthday
{
int y,m,d;
};
这需要一个新的函数进行储存——getBirthdayFromBirthdayNumber()
Birthday getBirthdayFromBirthdayNumber(long b)
{
Birthday birthday = {b / 10000,b % 10000 / 100,b % 10000 % 100};
return birthday;
}
这样就可以用
Birthday b = getBirthdayFromBirthdayNumber(getBirthdayNumberFromID(300000200001010000));
cout << b.yb.y << "-" << b.m << "-" << b.d;
进行输出了…等等,我还有更简单的方法,没错,就是运算符重载!
struct Birthday
{
int y,m,d;
friend ostream& operator<<(ostream& os,Birthday& b)
{
os << b.y << "-" << b.m << "-" << b.d;
return os;
}
};
源码
经过一番改进,最后成品如下:
#include<iostream>
using namespace std;
struct Birthday
{
int y,m,d;
friend ostream& operator<<(ostream& os,Birthday& b)
{
os << b.y << "-" << b.m << "-" << b.d;
return os;
}
operator long()
{
return y * 10000 + m * 100 + d;
}
};
long getBirthdayNumberFromID(long);
Birthday getBirthdayFromBirthdayNumber(long);
Birthday getBirthdayFromID(long);
int main()
{
return 0;
}
long getBirthdayNumberFromID(long id)
{
long a = id % 1000000000000;
long b = a / 10000;
return b;
}
Birthday getBirthdayFromBirthdayNumber(long b)
{
Birthday birthday = {b / 10000,b % 10000 / 100,b % 10000 % 100};
return birthday;
}
Birthday getBirthdayFromID(long id)
{
return getBirthdayFromBirthdayNumber(getBirthdayNumberFromID(id));
}
总结
- 截取整数前半部分
整数 / 从第几位结束
12345 / 100 => 123
- 截取整数后半部分
整数 % 从第几位开始+1
12345 % 1000 => 345
内容总结
以上是互联网集市为您收集整理的C++从身份证号获取生日全部内容,希望文章能够帮你解决C++从身份证号获取生日所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。