C++从身份证号获取生日
%与/
众所周知,编程语言里有一个’%'运算符,和数学里的%不同,它是用来取余数的,请看下面程序:
#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++从身份证号获取生日相关推荐
- 【uniapp】根据身份证号获取生日日期
根据身份证号获取生日日期 传入身份证号获取生日日期 getBirthday = idCard => {var birthday = "";if (idCard != null ...
- 利用身份证号获取生日信息
1 问题 如何利用Java程序从身份证号中获取生日信息. 2 方法 采用"截图+文字+代码"的方式描述. //调用函数获取当前日期以及截取身份证号码中的数字 import java ...
- js根据15,18位身份证号获取生日与性别
15位身份证号:第6.7位为年份,8.9位为月份,10.11为日.最后一位为性别,男为奇数,女为偶数. 18位身份证号:第6.7.8.9位为年份,10.11位为月份,12.13为日.最后一位为性别, ...
- js脚本根据身份证号获取性别、年龄、家庭地址、生日
做项目测试时需要根据身份证号获取其信息,也不想调接口,就自己在本地通过收集资料整合了一个 当身份证号的焦点失去选中后,根据身份证号获取性别.年龄.家庭地址.生日 直接上代码: index.html & ...
- 根据身份证号获取性别和生日
function tools_calcIdentiyInfo(str) { let sex = parseInt(str.substr(16, 1)) % 2 == 1 ? '男' : '女'; le ...
- Java身份证号脱敏、校验身份证号合法性、根据身份证号获取年龄、根据生日获取年龄
这里写目录 身份证号编码规则 身份证号脱敏 身份证号合法性校验 根据身份证号获取年龄 根据生日日期获取年龄 根据身份证号获取年龄.生日的Map集合 身份证号编码规则 第一.二位表示省(自治区.直辖市. ...
- 【学习】身份证号获取个人信息
身份证具有明显的代表唯一性,通过身份证号可以获取到哪些信息?社保在校验添加缴费人信息时,需要根据输入的身份证号获取信息,格式验证通过后将获取到的信息填充.这就需要了解一些规格. 现在新一代的身份证居多 ...
- 根据身份证号获取出生日期
先去这个地址拷贝解析身份证号码的封装方法:(直接全部拷贝) https://blog.csdn.net/weixin_44542781/article/details/116377458?spm=10 ...
- 【Flutter】Dart 校验身份证号合法性,根据身份证号获取年龄性别
js版或OC.Java版的都容易找到,Dart版的比较少,mark一下吧. // 校验身份证合法性 bool verifyCardId(String cardId) {const Map city = ...
最新文章
- Java基础之随机生成数字和字母
- Canvas、Paint、Path
- VLC-OFDM系统中一种改进的可变噪声比特功率分配算法
- python字符串与文本处理技巧(2):大小写敏感搜索、最短匹配、多行匹配、Unicode标准化
- Linux 下 Redis 安装教程
- CodeForces 901D Weighting a Tree(结论)
- C++模板类嵌套类内部类局部类的区别
- eclipse中git分支创建与合并(-)
- gwr模型用什么做_干货|教你如何用Stata做二元选择模型
- 天嵌i.mx6q开发板android4.3编译问题
- HTML5开源游戏引擎lufylegend1.5.0发布
- Cookie Domain设置错误引发的单点登录死循环问题
- 元宇宙项目的新黑马ComputeCoin(CCN)
- vue项目 百度地图离线开发
- AI二次开发C#使用RGBColor
- 德施曼3D人脸锁市占率72%,新华社关注智能锁行业加速发展
- 2022-2028年中国汽车样车试制行业市场调研分析及发展规模预测报告
- The Definitive Guide to ARM Cortex M3 and Cortex M4 Processors, 3rd Edition.pdf
- react父子组件之间的传值
- SPSS——相关分析——Spearman秩相关系数