C++常用函数
String 类型和 int 类型转换
1. String -> int
1.使用stoi()
1 | string s("12345"); |
2.使用atoi()
1 | char str3[10] = "3245345"; |
3.使用 sscanf() 映射
1 | long long c = 0; |
2.int -> String
1.使用 c++里的 to_string()
1 | long long m = 1234566700; |
2.使用itoa()
1 | int n = 100; |
3.使用 sprintf() 映射
1 | long long b = 1234560; |
判断字符类型
1、isalpha(x) 判断 x 是否为字母
2、isdigit(x) 判断 x 是否为数字
3、islower(x) 判断 x 是否为小写字母
4、isupper(x) 判断 x 是否为大写字母
5、isalnum(x) 判断 x 是否为字母或数字
6、ispunct(x) 判断 x 是否为标点符号
7、isspace(x) 判断 x 是否为空格
排序函数 sort
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
(1)第一个参数 first:是要排序的数组的起始地址。
(2)第二个参数 last:是结束的地址(最后一个数据的后一个数据的地址)
(3)第三个参数 comp 是排序的方法:可以是从升序也可是降序。如果第三个参数不写,则默认的排序方法是从小到大排序。
元素自身包含了比较关系,如 int,double 等基础类型,可以直接进行比较 greater
1 | int s[]={34,56,11,23,45}; |
元素本身为 class 或者 struct,类内部需要重载< 运算符,实现元素的比较;
求平方根
头文件:#include <math.h>
sqrt() 用来求给定值的平方根,其原型为:
double sqrt(double x);
判断数组长度
1.string 类型
-
size()
个人比较常用1
2string a = "abc";
cout << a.size(); // a = 32.length()
1
2string b = "abc";
cout << b.length(); // b =3
2.char 类型
-
strlen
头文件是
strlen 是一个函数,它用来计算指定字符串 str 的长度,但不包括结束字符(即 null 字符)
1
2
3
4
5char s1[505];
s1=123456;
int la=strlen(s1);//a1=6 -
sizeof
实际上是得到的值是 类型长度 * 长度
因为 char 的每个字符长 1,所以可以直接用
但比如 int 每个字符长 4,得到的值为 4 * 长度
会自动+1 是因为最后一个是 ‘\n’
1
2
3
4char str[]="hello world";
cout << sizeof(str); //12
int a[] = {1, 2, 3};
cout << sizeof(a); // 12
求绝对值
abs() 是用来求整型表达式的绝对值
fabs() 是用来求浮点型表达式的绝对值
求次方
1. 数值较小,不求幂
pow() 函数用来求 x 的 y 次幂(次方),其原型为:
double pow(double x, double y);
pow()用来计算以 x 为底的 y 次方值,然后将结果返回。设返回值为 ret,则 ret = xy。
2.数值较大,求幂
快速幂
1 | int qmi(int a, int k, int p){ |
给全数组赋值
memset()函数原型是 extern void *memset(void *buffer, int c, int count)
buffer:为指针或是数组 c:是赋给 buffer 的值 count:是 buffer 的长度.
这个函数在 socket 中多用于清空数组.如:原型是 memset(buffer, 0, sizeof(buffer))
memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’;
1 | const int N = 100010; |
读取字符
1.读取到某个字符为止
getline
头文件:#include
istream& getline ( istream &is , string &str , char delim );
其中,istream &is 表示一个输入流,譬如 cin;
string&str 表示把从输入流读入的字符串存放在这个字符串中(可以自己随便命名,str 什么的都可以);
char delim 表示遇到这个字符停止读入,在不设置的情况下系统默认该字符为’\n’,也就是回车换行符(遇到回车停止读入)。
1 | string line; |
2.读取到某个条件为止
循环输入,直到符合某种条件时结束输入。
1 | int n; |
全排序
STL 提供了两个用来计算排列组合关系的算法,分别是 next_permutation 和 prev_permutation。首先我们必须了解什么是“下一个”排列组合,什么是“前一个”排列组合。考虑三个字符所组成的序列{a,b,c}。
这个序列有六个可能的排列组合:abc,acb,bac,bca,cab,cba。这些排列组合根据 less-than 操作符做字典顺序(lexicographical)的排序。也就是说,abc 名列第一,因为每一个元素都小于其后的元素。acb 是次一个排列组合,因为它是固定了 a(序列内最小元素)之后所做的新组合。
同样道理,那些固定 b(序列中次小元素)而做的排列组合,在次序上将先于那些固定 c 而做的排列组合。以 bac 和 bca 为例,bac 在 bca 之前,因为次序 ac 小于序列 ca。面对 bca,我们可以说其前一个排列组合是 bac,而其后一个排列组合是 cab。序列 abc 没有“前一个”排列组合,cba 没有“后一个”排列组合。
1.正序
1 |
|
结果
1 | 1 2 4 3 |
2.逆序
1 |
|
结果
1 | 4 3 2 1 |
大小写转换
1.toupper / tolower
1、toupper(x) 如果 x 是小写字母,将其转换成大写字母
2、tolower(x) 如果 x 是大写字母,将其转换成小写字母
非字母字符不做出处理
返回的值是 int 类型
1 | string a = "aBc"; |
2.transform
1、如果使用 string 类,可以使用#include
transform(str.begin(),str.end(),str.begin(),::tolower);
记得::tolower 前面有::, 而且是::tolower,不是::tolower()
1 | string str; |
连接数组
1.string
直接相加
1 | string a = "ab"; |
2. char
strcat 函数
其一般形式为:strcat(字符数组 1,字符数组 2)
strcat 的作用是连接两个字符数组中的字符串,把字符串 2 接到字符串 1 的后面,结果放在字符数组 1 中,函数调用后得到一个函数值——字符数组 1 的地址。
1 | char str1[30]={″People′s Republic of ″}; |
复制数组
1.char
-
strcpy 函数
其一般形式为:strcpy(字符数组 1,字符串 2)
strcpy 是“字符串复制函数”。
作用:是将字符串 2 复制到字符数组 1 中去。例如:
1
2
3
4
5
6char str1[15],str2[]={"China2"};
strcpy(str1,"china");
cout << str1 << endl;//china
strcpy(str1,str2);
cout << str1 << endl;//China2(1)字符数组 1 必须定义得足够大,以便容纳被复制的字符串。字符数组 1 的长度不应小于字符串 2 的长度。
(2)“字符数组 1”必须写成数组名形式(如 str1),
“字符串 2”可以是字符数组名,也可以是一个字符串常量。如:strcpy(str1,″China″);
(3)复制时连同字符串后面的′\0′一起复制到字符数组 1 中。
-
strncpy 函数
例如:strncpy(str1,str2,2);作用是将 str2 中前面 2 个字符复制到 str1 中去,然后再加一个‘\0’。
1
2
3
4
5
6char str1[15],str2[]={"China2"};
strcpy(str1,"china");
cout << str1 << endl;//china
strncpy(str1,str2, 2);
cout << str1 << endl;//China 大写C
比较字符串
strcmp 函数
其一般形式为:strcmp(字符串 1,字符串 2)
strcmp 的作用是比较字符串 1 和字符串 2。
例如:strcmp(str1,str2);
strcmp(″China″,″Korea″);
strcmp(str1,″Beijing″);
比较的结果由函数值带回
(1) 如果字符串 1=字符串 2,函数值为 0。
(2) 如果字符串 1>字符串 2,函数值为一正整数。
(3) 如果字符串 1<字符串 2,函数值为一负整数。