欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【C++】如何理解函数重载【2】--函数重载示例

程序员文章站 2024-03-17 08:35:22
...

目录

1.函数讲解

1.1 统计数字包含多少位

1.2 删除一组数字的后面几位,比如12345678,删除678,剩下12345

1.3 本程序返回一个数的前几位数字,比如12345678,3,返回就是123

1.4 本函数返回指向string的指针,指向前几个character

2 总体程序示例


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

【C++】如何理解函数重载【2】--函数重载示例

相关标签: 函数重载

上一篇: Java实现字符串排序

下一篇: