【C++】如何理解函数重载【2】--函数重载示例
【摘要】 目录
1.函数讲解
1.1 统计数字包含多少位
1.2 删除一组数字的后面几位,比如12345678,删除678,剩下12345
1.3 本程序返回一个数的前几位数字,比如12345678,3,返回就是123
1.4 本函数返回指向string的指针,指向前几个character
2 总体程序示例
1.函数讲解
1.1 统计数字包含多少位
//统计有几位...
目录
1.2 删除一组数字的后面几位,比如12345678,删除678,剩下12345
1.3 本程序返回一个数的前几位数字,比如12345678,3,返回就是123
1.4 本函数返回指向string的指针,指向前几个character
1.函数讲解
1.1 统计数字包含多少位
-
//统计有几位
-
unsigned digits = 1;
-
while (n/=10)
-
{
-
digits++;
-
}
1.2 删除一组数字的后面几位,比如12345678,删除678,剩下12345
-
if (digits > ct)
-
{
-
ct = digits - ct;
-
while (ct--)
-
{
-
num /= 10;
-
}
-
return num;
-
}
-
else
-
{
-
return num;//如果ct>=number ,返回整个数字
-
}
1.3 本程序返回一个数的前几位数字,比如12345678,3,返回就是123
-
//本程序返回一个数的前几位数字,比如12345678,3,返回就是123
-
unsigned long left(unsigned long num, unsigned ct)
-
{
-
unsigned digits = 1;
-
unsigned long n = num;
-
-
//做一个错误判断
-
if (ct == 0 || num == 0)
-
return 0;//没数据时返回0
-
-
//统计有几位
-
while (n/=10)
-
{
-
digits++;
-
}
-
-
//保留左边前面几位数字
-
if (digits > ct)
-
{
-
ct = digits - ct;
-
while (ct--)
-
{
-
num /= 10;
-
}
-
return num;
-
}
-
else
-
{
-
return num;//如果ct>=number ,返回整个数字
-
}
-
}
1.4 本函数返回指向string的指针,指向前几个character
-
//本函数返回指向string的指针,指向前几个character
-
char * left(const char * str, int n)
-
{
-
if (n < 0)
-
n = 0;
-
char *p = new char[n + 1];
-
int i;
-
for ( i = 0; i < n && str[i]; i++)
-
{
-
p[i] = str[i];//copy
-
}
-
-
//上面有个循环,循环结束了i可能等于n,也可能小于n,如果字符数目小于n的话,这个循环的意思,就是把剩下不足的补空字符
-
while (i<=n)
-
{
-
p[i++] = '\0';
-
}
-
return p;
-
}
2 总体程序示例
-
//leftover.cpp -- 重载left函数示例
-
#include<iostream>
-
unsigned long left(unsigned long num, unsigned ct);
-
char * left(const char * str, int n = 1);//这里默认了n=1
-
-
int main()
-
{
-
using namespace std;
-
char * trip = "Hawaii!!";// test value
-
unsigned long n = 12345678;// test value
-
int i;
-
char * temp;
-
-
for (i = 1; i < 10; i++)
-
{
-
cout << left(n, i) << endl;
-
temp = left(trip, i);
-
cout << temp << endl;
-
delete[] temp;
-
}
-
return 0;
-
}
-
-
//本程序返回一个数的前几位数字,比如12345678,3,返回就是123
-
unsigned long left(unsigned long num, unsigned ct)
-
{
-
unsigned digits = 1;
-
unsigned long n = num;
-
-
//做一个错误判断
-
if (ct == 0 || num == 0)
-
return 0;//没数据时返回0
-
-
//统计有几位
-
while (n/=10)
-
{
-
digits++;
-
}
-
-
//保留左边前面几位数字
-
if (digits > ct)
-
{
-
ct = digits - ct;
-
while (ct--)
-
{
-
num /= 10;
-
}
-
return num;
-
}
-
else
-
{
-
return num;//如果ct>=number ,返回整个数字
-
}
-
}
-
-
//本函数返回指向string的指针,指向前几个character
-
char * left(const char * str, int n)
-
{
-
if (n < 0)
-
n = 0;
-
char *p = new char[n + 1];
-
int i;
-
for ( i = 0; i < n && str[i]; i++)
-
{
-
p[i] = str[i];//copy
-
}
-
-
//上面有个循环,循环结束了i可能等于n,也可能小于n,如果字符数目小于n的话,这个循环的意思,就是把剩下不足的补空字符
-
while (i<=n)
-
{
-
p[i++] = '\0';
-
}
-
return p;
-
}
文章来源: kings.blog.csdn.net,作者:人工智能博士,版权归原作者所有,如需转载,请联系作者。
原文链接:kings.blog.csdn.net/article/details/93368470
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)