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

目录

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

猜你喜欢

转载自blog.csdn.net/qq_15698613/article/details/93368470
今日推荐