C/C++常用函数合集

目录

C标准库

<string.h>头文件

  1. memset()
  2. memcpy()
  3. strcpy()
  4. strncpy()
  5. stract()
  6. getline()
  7. strlen()

<ctype.h>头文件

  1. tolower()/toupper()
  2. isalpha()、isdigit()、isprint()

<math.h>头文件

  1. pow()
  2. floor()
  3. atan()

STL

头文件

  1. min(),max()函数
  2. lower_bound()
  3. upper_bound()
  4. next_permutation()/prev_permutation()
  5. Sort()
  6. fill()

C标准库
<string.h>头文件
1.memset()
函数原型:memset(void *s , int c , size_t n)

作用:将已开辟内存空间s的首n个字节的值设置为c。一般用于在对字符串进行初始化为‘\0’或‘ ’

注意:
1.s为首地址,c为要赋予的字符,n为长度
2.一般不用于初始化数字数组

代码示例:

#include<stdio.h>
#include<string.h>
 
int main(){
	char str[5]={'1','2','3','4','5'};
	
	printf("原始字符数组:");
	for(int i=0;i<5;i++)
		printf("%c ",str[i]);
	printf("\n");
	
//	内存初始化 
	memset(str,'\0',5);
	
	printf("初始化后的字符数组:");
	for(int i=0;i<5;i++)
		printf("%c ",str[i]);
		
	return 0;
}

2.memcpy()
函数原型:void *memcpy(void *dest, const void *src, size_t n);

作用:将以src开头,长度为n的内存空间里的内容拷贝到以dest开头的内存空间里去。

例:

char a[100],b[50];
memcpy(b,a,sizeof(b)); //将a的sizeof(b)个元素赋给b
注意:如果用sizeof(a),会造成b的内存地址溢出。

3.strcpy()
函数原型:char strcpy(char dest, const char *src);

作用:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间

例:

char a[100],b[50];
strcpy(a,b);
注意:遇到‘\0’时就结束拷贝。

4.strncpy()
函数原型:strncpy(char* dest,const char* src,int n)

作用:把src所指的字符串中以src地址开始的前n个字节复制到dest所指的空间中,并返回dest。

注意:
1.结果dest不包括结束符NULL(’\0’)
2.如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节

5.stract()
函数原型:char *strcat(char *dest, const char *src);

作用:将两个char类型数组相连,结果放在dest中,返回拼接后指向dest的指针。

6.getline()
函数原型:istream& getline ( istream &is , string &str , char delim );

参数解释
is 进行读入操作的输入流,常用cin
str 已声明的用于存储读入内容的对象,常为string类型
delim 终结符

作用:
将输入流is中读到的字符存入str中,直到遇到终结符delim才结束。如果没有定义delim,则默认为 ‘\n’(换行符)。

注意:
getline遇到delim时停止读入(但读入了delim),然后将所读内容存储到string对象中(不存delim)下次读入操作时,将在delim的下个字符开始读入。

代码示例:

#include<stdio.h>
#include<string.h>
 
int main(){
	string str;
	getline(cin,str,'o');
	printf("%s",str.c_str());  // string类型字符串不能直接使用printf输出,需要调用string中的c_str()函数
}

7.strlen()
函数原型:size_t strlen(const char *string);

作用:计算string字符串或者以char *声明的字符数组的长度。

<ctype.h>头文件
1.tolower()/toupper()
作用:改变字母大小写

例:

char n=’h’;
cout<<(char)toupper(n); //输出结果为‘H’
注意:n的值并没有改变,仍然为‘h’。

2.isalpha(),isdigit(),isprint()
作用:用来对是否是字母,数字,可打印字符(非控制字符)进行判断

<math.h>头文件
1.pow()
函数原型:double pow(double x, double y)

作用:返回x的y次方

2.floor()
函数原型:double floor(double x);

作用:用于输出浮点类型中小于此数的最大整数

注:floor(n+0.5)可用于进行四舍五入的处理

3.atan()
作用:用来求π的值:atan(1)=π/4 π=4.0*atan(1)

代码示例:

#include<iostream>
#include<math.h>        
using namespace std;
 
// 求π的值,保留小数点后15为小数
int main(){
    double pi = 4*atan(1);
    printf("%.15f",pi);     //保留π后的十五位小数
}

STL
头文件
1.min(),max()函数
作用:返回两个元素中最小(最大)的一个

2.lower_bound()
函数原型:lower_bound(int* first,int* last,val);

作用:查找有序区间[first,last]中第一个大于等于x的位置

代码示例:

#include<iostream>
#include<algorithm>
using namespace std;
 
int main(){
	int n[10];
	for(int i=0;i<10;i++)
		n[i]=i;
	
	cout<<"第一个大于等于7的位置:"<<lower_bound(n,n+9,7)<<endl;
	cout<<"该位置上的值:"<<*lower_bound(n,n+9,7)<<endl;
	
	return 0;
}

3.upper_bound()
作用:大致和lower_bound()相同,不过查找的是有序区间[first,last]中第一个大于x的位置

4.next_permutation()/prev_permutation()
格式:next_permutation(数组名,数组名+数组长度)

作用:
将数组的排序改为当前数组全排列的下/上一个

返回值:
若当前数组存在下/上一个全排列,则返回ture,否则返回false。

解释:
假设数组为a,b,c。则该数组的全排列为abc,acb,bac,bca,cab,cba。若当前数组为bac,则其全排列的上一个数组即为acb,下一个数组为bca

注意:
若要求数组所有的全排列,需要将数组进行升序排列,否则只能找出该序列之后的全排列数。

代码示例:

#include<iostream>
#include<algorithm>
using namespace std;
 
//输出abc的全排列 
int main(){
	char ans[3]={'a','b','c'};
	do{
        for(int i=0;i<3;++i)
            cout<<ans[i]<<" ";
         cout<<endl;
    }while(next_permutation(ans,ans+3));
		        
	return 0;
} 

6.Sort()
函数原型:void sort(RanIt first, RanIt last, Pred pr);

参数解释
first 指向容器首地址的指针(数组名)
last 指向容器尾地址的指针(数组名+数组长度)
pr 比较方法(默认为升序)
具体用法:

sort(begain,end,less<数据类型>())   升序
sort(begain,end,greater<数据类型>()) 降序   

注意:开始和结尾用的都是指针

示例代码:

#include<iostream>
#include<algorithm>
using namespace std;
 
int main(){
	 char ch[5]={'e','a','c','b','d'};
	 cout<<"原字符数组为:"<<ch<<endl; 
//	 升序排列 
	 sort(ch,ch+5);
	 cout<<"升序排列后为:"<<ch<<endl;
//	 降序排列 
	 sort(ch,ch+5,greater<char>());
	 cout<<"降序排列后为:"<<ch<<endl;
	 
	 return 0;
} 

7.fill()
函数原型:void fill(first,last,val);

参数解释
first 起始地址
last 末尾地址
val 将要替换的值
作用:可将数组的值初始化成指定值

例如:
1.初始化一维数组
int a[10];
fill(a,a+10,80);

2.初始化二维数组
int a[10][10];
fill(a[0],a[0]+10*10,90);

  • 10
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值