【C++】如何理解函数重载【2】--函数重载示例
程序员文章站
2024-03-17 08:35:22
...
目录
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;
}
上一篇: Java实现字符串排序