C++编程,求指导! 编写一个left()函数,它将字符串和n作为参数,并返回该字符串的前n个字符

C++编程,求指导! 编写一个left()函数,它将字符串和n作为参数,并返回该字符串的前n个字符(n默认值为1),另外编写一个left()重载函数,它将无符号整数和n作为参数,并返回无符号整数的前n位(n的默认值为1) 。

返回字符串的:(直接用的char*)
char* left(char* str,int n = 1)
{
if(n<=0 || str==NULL) return false;
char *a=new char[n+1];
int i=0;
while(str[i]!='\0' && i<n)
{
a[i]=str[i];
++i;
}
a[i]='\0';
return a;
}
返回整数的:
unsigned left(unsigned key,int n=1)
{
if(n<=0) return 0;
int len=0,copy=key;
while(copy>0)
{
copy/=10;
++len;
}
if(len<=n) return key;
else 
{
copy=len-n;
while(copy--) key/=10;
return key;
}
}
函数很简单,注意一些特殊情况就行了。

追问

char *a=new char[n+1];
请问这个是什么意思?

追答

就是先声明一个char型指针,再为它分配一个n+1个char大小(一个字节乘以(n+1))的空间来储存需要的前n个字符,申请n+1个空间是为了把最后一个位置写入'\0',字符串以'\0'结尾,用它标志一个字符串的结束。
new 关键字是为程序在堆上分配空间(堆上分配的不会因为这个函数结束而消失),删除这个空间用delete,或delete[],用哪个看分配的是一个还是一组(一个数组),比如这个就要用delete[] a; java等一些语言有自己的垃圾收集机制,不需要自己释放空间。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-02-23
CString::Left
CString Left( int nCount ) const;

STL里有现成了。
相似回答