%与/

众所周知,编程语言里有一个’%'运算符,和数学里的%不同,它是用来取余数的,请看下面程序:

#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));
}

总结

  1. 截取整数前半部分
整数 / 从第几位结束
12345 / 100 => 123
  1. 截取整数后半部分
整数 % 从第几位开始+1
12345 % 1000 => 345

C++从身份证号获取生日相关推荐

  1. 【uniapp】根据身份证号获取生日日期

    根据身份证号获取生日日期 传入身份证号获取生日日期 getBirthday = idCard => {var birthday = "";if (idCard != null ...

  2. 利用身份证号获取生日信息

    1 问题 如何利用Java程序从身份证号中获取生日信息. 2 方法 采用"截图+文字+代码"的方式描述. //调用函数获取当前日期以及截取身份证号码中的数字 import java ...

  3. js根据15,18位身份证号获取生日与性别

    15位身份证号:第6.7位为年份,8.9位为月份,10.11为日.最后一位为性别,男为奇数,女为偶数.  18位身份证号:第6.7.8.9位为年份,10.11位为月份,12.13为日.最后一位为性别, ...

  4. js脚本根据身份证号获取性别、年龄、家庭地址、生日

    做项目测试时需要根据身份证号获取其信息,也不想调接口,就自己在本地通过收集资料整合了一个 当身份证号的焦点失去选中后,根据身份证号获取性别.年龄.家庭地址.生日 直接上代码: index.html & ...

  5. 根据身份证号获取性别和生日

    function tools_calcIdentiyInfo(str) { let sex = parseInt(str.substr(16, 1)) % 2 == 1 ? '男' : '女'; le ...

  6. Java身份证号脱敏、校验身份证号合法性、根据身份证号获取年龄、根据生日获取年龄

    这里写目录 身份证号编码规则 身份证号脱敏 身份证号合法性校验 根据身份证号获取年龄 根据生日日期获取年龄 根据身份证号获取年龄.生日的Map集合 身份证号编码规则 第一.二位表示省(自治区.直辖市. ...

  7. 【学习】身份证号获取个人信息

    身份证具有明显的代表唯一性,通过身份证号可以获取到哪些信息?社保在校验添加缴费人信息时,需要根据输入的身份证号获取信息,格式验证通过后将获取到的信息填充.这就需要了解一些规格. 现在新一代的身份证居多 ...

  8. 根据身份证号获取出生日期

    先去这个地址拷贝解析身份证号码的封装方法:(直接全部拷贝) https://blog.csdn.net/weixin_44542781/article/details/116377458?spm=10 ...

  9. 【Flutter】Dart 校验身份证号合法性,根据身份证号获取年龄性别

    js版或OC.Java版的都容易找到,Dart版的比较少,mark一下吧. // 校验身份证合法性 bool verifyCardId(String cardId) {const Map city = ...

最新文章

  1. Java基础之随机生成数字和字母
  2. Canvas、Paint、Path
  3. VLC-OFDM系统中一种改进的可变噪声比特功率分配算法
  4. python字符串与文本处理技巧(2):大小写敏感搜索、最短匹配、多行匹配、Unicode标准化
  5. Linux 下 Redis 安装教程
  6. CodeForces 901D Weighting a Tree(结论)
  7. C++模板类嵌套类内部类局部类的区别
  8. eclipse中git分支创建与合并(-)
  9. gwr模型用什么做_干货|教你如何用Stata做二元选择模型
  10. 天嵌i.mx6q开发板android4.3编译问题
  11. HTML5开源游戏引擎lufylegend1.5.0发布
  12. Cookie Domain设置错误引发的单点登录死循环问题
  13. 元宇宙项目的新黑马ComputeCoin(CCN)
  14. vue项目 百度地图离线开发
  15. AI二次开发C#使用RGBColor
  16. 德施曼3D人脸锁市占率72%,新华社关注智能锁行业加速发展
  17. 2022-2028年中国汽车样车试制行业市场调研分析及发展规模预测报告
  18. The Definitive Guide to ARM Cortex M3 and Cortex M4 Processors, 3rd Edition.pdf
  19. react父子组件之间的传值
  20. SPSS——相关分析——Spearman秩相关系数

热门文章

  1. 网站设计基础教程||阶段案列9.4||通过JS实现背景图片切换
  2. 文本相似性检测---词语权重计算
  3. 芯片优缺点_算力至上?AI芯片大对决
  4. 单卡、流量池、统付池等,细数那些常见的物联网卡计费模式
  5. 《Python网络爬虫技术》读书笔记1
  6. Linux中rz -y命令和rz -E命令的区别
  7. 基因数据处理101之SparkBWA本地运行配置和实例
  8. 深圳蚂蚁搬家公司 深圳搬家
  9. 计算机室+云平台,软件综合实验室教学云平台的研究与应用
  10. 操作系统实验4:基于内核栈完成进程切换