飞道的博客

C/C++常用函数合集

471人阅读  评论(0)

目录

C标准库

<string.h>头文件

1.memset()

2.memcpy()

3.strcpy()

4.strncpy()

5.strcat()

6.getline()

 7.strlen()

<ctype.h>头文件

1.tolower()/toupper() 

2.isalpha(),isdigit(),isprint()

<math.h>头文件

1.pow()

2.floor()

3.ceil()

4.atan()

STL

<algorithm>头文件

1.min(),max()函数

2.lower_bound()

3.upper_bound()

4.next_permutation()/prev_permutation()

6.Sort()

         7.fill()

8.reverse()


C标准库

<string.h>头文件

1.memset()

函数原型:memset(void *s , int c , size_t n)

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

注意:1.s为首地址,c为要赋予的字符,n为长度     

           2.一般不用于初始化数字数组

代码示例:


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

2.memcpy()

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

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

例:


  
  1. char a[ 100],b[ 50];  
  2. memcpy(b,a, sizeof(b)); //将a的sizeof(b)个元素赋给b

注意:如果用sizeof(a),会造成b的内存地址溢出。

3.strcpy()

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

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

例:


  
  1. char a[ 100],b[ 50];
  2. 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个字节

代码示例


  
  1. #include<iostream>
  2. #include<string.h>
  3. using namespace std;
  4. int main(){
  5. char s[] = { "hello"};
  6. char s2[ 10];
  7. cout<< strncpy(s2,s, 9);
  8. return 0;
  9. }

5.strcat()

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

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

代码示例


  
  1. #include<iostream>
  2. #include<string.h>
  3. using namespace std;
  4. int main(){
  5. char s[] = { "hello"};
  6. char s2[ 10];
  7. // 将s2数组赋空字符
  8. memset(s2, '\0', 10);
  9. // 连接字符数组s和s2
  10. strcat(s2,s);
  11. for( int i= 0;i< 10;i++){
  12. cout<<s2[i];
  13. }
  14. return 0;
  15. }

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的下个字符开始读入。

代码示例:


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

 7.strlen()

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

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

<ctype.h>头文件

1.tolower()/toupper() 

作用:改变字母大小写

例:


  
  1. char n=’h’;
  2. 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.ceil()

函数原型:double ceil(double x);

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

4.atan()

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

代码示例:


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

运行结果:

 

STL

<algorithm>头文件

1.min(),max()函数

作用:返回两个元素中最小(最大)的一个

2.lower_bound()

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

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

代码示例:


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

运行结果:

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

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

代码示例:


  
  1. #include<iostream>
  2. #include<algorithm>
  3. using namespace std;
  4. //输出abc的全排列
  5. int main(){
  6. char ans[ 3]={ 'a', 'b', 'c'};
  7. do{
  8. for( int i= 0;i< 3;++i)
  9. cout<<ans[i]<< " ";
  10. cout<< endl;
  11. } while(next_permutation(ans,ans+ 3));
  12. return 0;
  13. }

运行结果:

6.Sort()

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

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

具体用法:

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

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

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

示例代码:


  
  1. #include<iostream>
  2. #include<algorithm>
  3. using namespace std;
  4. int main(){
  5. char ch[ 5]={ 'e', 'a', 'c', 'b', 'd'};
  6. cout<< "原字符数组为:"<<ch<< endl;
  7. // 升序排列
  8. sort(ch,ch+ 5);
  9. cout<< "升序排列后为:"<<ch<< endl;
  10. // 降序排列
  11. sort(ch,ch+ 5,greater< char>());
  12. cout<< "降序排列后为:"<<ch<< endl;
  13. return 0;
  14. }

运行结果:

7.fill()

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

参数解释
first 起始地址
last 末尾地址
val 将要替换的值

作用:可将数组的值初始化成指定值

例如:

1.初始化一维数组


  
  1. int a[ 10];
  2. fill(a,a+ 10, 80);

2.初始化二维数组


  
  1. int a[ 10][ 10];
  2. fill(a[ 0],a[ 0]+ 10* 10, 90);

8.reverse()

函数原型:void reverse (BidirectionalIterator first, BidirectionalIterator last)

作用:将[first,last)范围内的字符顺序反转

代码示例:


  
  1. #include <iostream>
  2. #include<algorithm>
  3. #include<cstring>
  4. using namespace std;
  5. int main ()
  6. {
  7. char s1[ 10]= "hello";
  8. string s2= "world";
  9. cout<<s1<< endl;
  10. cout<<s2<< endl;
  11. // reverse的使用
  12. reverse(s1,s1+ strlen(s1));
  13. reverse(s2.begin(),s2.end());
  14. cout<<s1<< endl;
  15. cout<<s2<< endl;
  16. }

运行结果:

 

 


转载:https://blog.csdn.net/li_l_il/article/details/82356275
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场