目录
<string.h>头文件
<ctype.h>头文件
2.isalpha(),isdigit(),isprint()
<math.h>头文件
<algorithm>头文件
4.next_permutation()/prev_permutation()
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个字节
代码示例
-
#include<iostream>
-
#include<string.h>
-
using
namespace
std;
-
-
int main(){
-
char s[] = {
"hello"};
-
char s2[
10];
-
cout<<
strncpy(s2,s,
9);
-
-
return
0;
-
}
5.strcat()
函数原型:char *strcat(char *dest, const char *src);
作用:将两个char类型数组相连,结果放在dest中,返回拼接后指向dest的指针。
代码示例
-
#include<iostream>
-
#include<string.h>
-
using
namespace
std;
-
-
int main(){
-
char s[] = {
"hello"};
-
char s2[
10];
-
-
// 将s2数组赋空字符
-
memset(s2,
'\0',
10);
-
// 连接字符数组s和s2
-
strcat(s2,s);
-
-
for(
int i=
0;i<
10;i++){
-
cout<<s2[i];
-
}
-
-
return
0;
-
}
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.ceil()
函数原型:double ceil(double x);
作用:用于输出浮点类型中大于此数的最小整数
4.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
<algorithm>头文件
1.min(),max()函数
作用:返回两个元素中最小(最大)的一个
2.lower_bound()
函数原型:lower_bound(int* first,int* last,int val);
作用:查找有序区间[first,last]中第一个大于等于val的位置
代码示例:
-
#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);
8.reverse()
函数原型:void reverse (BidirectionalIterator first, BidirectionalIterator last)
作用:将[first,last)范围内的字符顺序反转
代码示例:
-
#include <iostream>
-
#include<algorithm>
-
#include<cstring>
-
using
namespace
std;
-
-
int main ()
-
{
-
char s1[
10]=
"hello";
-
string s2=
"world";
-
-
cout<<s1<<
endl;
-
cout<<s2<<
endl;
-
-
// reverse的使用
-
reverse(s1,s1+
strlen(s1));
-
reverse(s2.begin(),s2.end());
-
-
cout<<s1<<
endl;
-
cout<<s2<<
endl;
-
}
运行结果:
转载:https://blog.csdn.net/li_l_il/article/details/82356275