1 string.h、cstring(C)

(1)字符串连接函数 strcat、strncat
strcat(char[ ], const char[ ])
strncat(char[ ], const char[ ], int )

char str1[30]="People's Republic of ";
char str2[]="China";
strcat(str1,str2);
cout<<str1<<endl; //People's Republic of China
strncat(str2,"12345",2);
cout<<str2; //China12

(2)字符串复制函数 strcpy、strncpy
strcpy(char[ ], const char[ ])
strncpy(char[ ], const char[ ], int )

char str1[10],str2[10],str3[]="China";
strcpy(str1,str3);
cout<<str1<<endl; //China
strncpy(str2,str3,2);
cout<<str2; //Ch

(3)字符串比较函数 strcmp
strcmp(const char[ ],const char[ ])

strcmp(str1,str2);

1)如果str1=str2, 函数值=0;
2)如果str1>str2, 函数值>0;
3)如果str1<str2, 函数值<0;
(4)字符串长度函数strlen
strlen(const char[ ])

char str[10]="China";
cout<<strlen(str);//5

(5)初始化函数memset
memset(char[ ], int ,int )

char str[30];
memset(str,'a',5);
cout<<str; //aaaaa

(6)字符串分割
char *strtok(char src[], const char *delim)
src为待分解的字符串,delim为分隔符
由于C/C++没有 split() 函数,这里借用 strtok() 函数简单实现一下:

int split(char *src,char *separator,char *dest[]) {
	int i=0;
    char *p=strtok(src,separator);
    while(p!=NULL) {
        dest[i++]=p;
        p=strtok(NULL,separator);
    }
    return i;
}

2 cstring、string(C++)

(1)复制、连接、比较运算

string str1,str2,str3;
str1="abc"; //复制,abc 
cout<<str1<<endl; 
str2=str1+"def"; //连接,abcdef
cout<<str2<<endl;
cout<<(str1>str2)<<endl; //比较,0
cout<<(str1<str2)<<endl; //比较,1
cout<<(str1=="abc");    //比较,1

(2)查找子串函数find、rfind
正向查找
find(string )
find(string ,int )

string s="abcaabcddbc";
cout<<s.find("abc")<<endl; //0
cout<<s.find("bc")<<endl; //1
cout<<s.find("ef")<<endl; //18446744073709551615(即-1)
cout<<s.find("abc",1)<<endl; //4
cout<<s.find("bc",6)<<endl; //9

逆向查找
find(string )

string s="abcaabcddbc";
cout<<s.rfind("abc")<<endl; //4
cout<<s.rfind("bc")<<endl; //9
cout<<s.rfind("ef")<<endl; //18446744073709551615(即-1)

注意:在条件控制语句中,不要将find()的返回值与0或-1作大小比较,而应与-1作等于或不等于比较。

string s="abcaabcddbc";
//正确做法 
cout<<(s.find("abc")!=-1)<<endl; //1
cout<<(s.find("abc")==-1)<<endl; //0
cout<<(s.find("ef")==-1)<<endl; //1 
cout<<(s.find("ef")!=-1)<<endl; //0
//错误做法 
cout<<(s.find("abc")>-1)<<endl; //理论返回1,实际0
cout<<(s.find("ef")<0)<<endl; //理论返回1,实际0

(3)替换子串函数replace
replace(int ,int ,string )

string s="aaabbbccc";
s.replace(3,3,"**");
cout<<s; //aaa**ccc

3 math.h、cmath

(1)int abs(int i) //返回整型参数i的绝对值
(2)double fabs(double x) //返回双精度参数x的绝对值
(3)long labs(long n) //返回长整型参数n的绝对值

(4)double exp(double x) //返回指数函数e^x的值
(5)double pow(double x,double y) //返回x^y的值
(6)double pow10(int p) //返回10^p的值

(7)double log(double x) //返回logex的值
(8)double log10(double x) //返回log10x的值

(9)double sqrt(double x) //返回√x的值

(10)int ceil(double x) //返回不小于x的最小整数
(11)int floor(double x) //返回不大于x的最大整数

4 stdlib.h、cstdlib

(1)void exit(int code) //终止程序执行
(2)void * malloc(long NumBytes) //申请内存
(3)void free(void *ptr) //释放内存

#include<cstdlib>
using namespace std;
int main(){
	int *i=(int *)malloc(sizeof(int)); //开辟一个整型数据空间 
	float *f=(float *)malloc(sizeof(float)*5); //开辟一个长度为5的浮点型数组
	free(i); //释放整型数据空间 
	free(f); //释放浮点型数组空间
	
	i=new int; //开辟一个整型数据空间
	f=new float[5]; //开辟一个长度为5的浮点型数组
	char *c=new char('a'); //开辟一个字符型数据空间,并赋初值为'a' 
	c=(char *)new char[4][5]; //开辟一个4x5字符数组 
	delete i;
	delete f;
	delete c;
	return 0;
}

注意:new、delete、sizeof()都是运算符
(4)void srand(int seed) //随机数生成器种子
(5)int rand(void) //生成0~32768之间的一个随机数

#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main(){
	srand(time(NULL));
	cout<<rand();
	return 0;
} 

5 algorithm

(1)排序函数sort
升序:sort(begin, end, less())
降序:sort(begin, end, greater())

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main(){
	int i;
	int a[]={8,4,1,0,6,3,5,7,9,2};
	int b[]={8,4,1,0,6,3,5,7,9,2};
	float f[]={8.1,4.1,1.1,0.1,6.1,3.1,5.1,7.1,9.1,2.1};
	char c[]="iebagdfhjc";
	string s[]={"wan","bi","zhang","ding","li"};
	
	sort(a,a+10); //升序排序(整数) 
	sort(b,b+10,greater<int>()); //降序排序(整数)
	sort(f,f+10); //升序排序(浮点数)
	sort(c,c+10); //升序排序(字符)
	sort(s,s+5); //升序排序(字符串)
	
	for(i=0;i<10;i++)
		cout<<a[i]<<" ";
	cout<<endl;
	for(i=0;i<10;i++)
		cout<<b[i]<<" ";
	cout<<endl;
	for(i=0;i<10;i++)
		cout<<f[i]<<" ";
	cout<<endl;
	for(i=0;i<10;i++)
		cout<<c[i]<<" ";
	cout<<endl;
	for(i=0;i<5;i++)
		cout<<s[i]<<" ";
	return 0;
}

在这里插入图片描述

6 文件操作

(1)stdio.h、cstdio(C)

#include<stdio.h>
int main(){
	int i,a[5];
	FILE *fp;
	fp=fopen("in.txt","r");
	for(i=0;i<5;i++){
		fscanf(fp,"%d",&a[i]);
	}
	fclose(fp);
	fp=fopen("out.txt","w");
	for(i=0;i<5;i++){
		fprintf(fp,"%d ",a[i]);
	}
	fclose(fp);
	return 0;
} 

(2)fstream(C++)

#include<fstream> 
using namespace std;
int main(){
	int i,a[5];
	ifstream in("in.txt"); //文件输入流 
	for(i=0;i<5;i++){
		in>>a[i];
	}
	in.close();
	ofstream out("out.txt"); //文件输出流 
	for(i=0;i<5;i++){
		out<<a[i]<<" ";
	}
	out.close();
	return 0;
}

​ 声明:本文转自C/C++常用函数汇总