一、atof()函数
atof()是C 语言标准库中的一个字符串处理函数,功能是把字符串转换成浮点数,所使用的头文件为<stdlib.h>。该函数名是 “ascii to floating point numbers” 的缩写。语法格式为:double atof(const char *nptr)。
二、stringstream
使用stringstream对象s简化类型转换,它内部有一个string的流对象缓冲区,它会识别输入的变量(s<<右边的变量)的类型转换为string存储到内部的缓冲区内,然后当用它输出时,它会识别输出变量(s>>右边的变量)的类型,然后从流对象中转化到该类型赋值给这个对象。
以空格为分割界限进行流分割
三、递归与栈的关系
递归对问题的处理顺序,是遵循了后进先出的规则
事实上,我们可以把任意一个递归程序转换成一个使用栈的程序。
递归和栈之间有一种紧密的联系。事实上,大部分的编译器是使用栈来实现递归的。
四、strstr函数
函数原型 : char* strstr(char *str1, char *str2);
功能 : 从str1中查找是否有str2字符串,如果有,从str1中str2出现的位置起返回str1的指针,如果没有,返回nullptr
五、c_str()函数
c_str()函数返回一个指向正规C字符串的指针常量,内容与本string串相同。
c_str()的原型是:const char*c_str() const;
c_str()生成一个const char *指针,指向以空字符终止的数组。(data()与c_str()类似,但是返回的数组不以空字符终止。)
注意:一定要使用strcpy()等函数来操作c_str()返回的指针。
六、判断是否为数字
isdigit是计算机C(C++)语言中的一个函数,主要用于检查其参数是否为十进制数字字符。
检查参数c是否为阿拉伯数字0到9。返回值:若参数c为阿拉伯数字,则返回TRUE,否则返回NULL(0)
七、增强型for循环
可用于数组和字符串
基本格式语法如下:
for(type element: arrays)
{
cout<<element;
}
其中type为arrays的类型(例如String,int,double,float),element是被声明的新的局部变量,对应的是数组或集合中的每个元素值。arrays即是要访问的数组名。
八、求最大公约数和最大公倍数的方法
三目运算符
int gcd(int a,int b) {
return b>0 ? gcd(b,a%b):a;
}
gcd库函数
#include <algorithm>
inline int gcd(int a,int b) {
return __gcd(a,b);
}
知道了最大公约数,最小公倍数也就出来啦
只要求出a和b的最大公约数t然后用a和b的乘积除以t就可以得到a和b的最小公倍数啦~
九、c++中getline()、get()等函数的用法详解
1、cin>>
最基本也是最常用的做法,输入一个数字。
接受一个字符串,遇到”空格“、”TAB“、”回车“都结束
2、getline()
接受一个字符串,可以接受空格并输出
3、gets()
接受一个字符串,可以接受空格并输出
在C++中运行会产生bug。在C11标准中已被正式删除,不建议使用
十、strlen函数详解
size_t strlen( const char *string );
计算字符串sting的长度,并返回字符串string的长度
strlen是不会计算\0之后的长度的
定义字符串数组后,一定要初始化
注意strlen返回的类型,size_t 无符号长整型
十一、pow()函数用法详解
pow()函数无法使用int类型的数据,将int类型强制转换为double或float后再使用pow()函数,正确的办法是pow(int,double(int));
十二、sort()排序的使用
在sort中对于rbegin()和rend()的巧妙使用;
sort(a.begin(),a.end())从小到大; 升序
sort(a.rbegin(),a.rend());从大到小; 降序
sort()函数可以对给定区间所有元素进行排序。它有三个参数sort(begin, end, cmp),其中begin为指向待sort()的数组的第一个元素的指针,end为指向待sort()的数组的最后一个元素的下一个位置的指针,cmp参数为排序准则,cmp参数可以不写,如果不写的话,默认从小到大进行排序。如果我们想从大到小排序可以将cmp参数写为greater < int >()就是对int数组进行排序,当然<>中我们也可以写double、long、float等等。如果我们需要按照其他的排序准则,那么就需要我们自己定义一个bool类型的函数来传入。比如我们对一个整型数组进行从大到小排序
十三、getchar()
程序执行到getchar()函数时,自动从输入缓冲区中去找字符,如果输入缓冲区中没有字符的话,那么就等待用户输入字符,此时用户使用键盘输入的字符,被输入到输入缓冲区中,键盘输入字符的时候首先进入输入缓冲区,然后getchar()函数获得的字符是从输入缓冲区中提取的且每次只能提取一个字符。
十四、cin.getline()
1.cin.getline()函数的完整形式有三个参数:cin.getline(字符数组名,字符个数,结束标志)
注意:若指定参数“字符个数”为n,则利用cout函数输出时只显示字符数组中的前n-1个字符。
原因:字符数组的第n个字符是不可见字符’\0’
2.当第三个参数省略时,系统默认为’\0’
3.简单实例: · cin.getline(str,8,‘m’),当输入abcdefghijklmn时,输出abcdefg,因为第8位是不可见字符’\0’
· cin.getline(str,8,‘e’),当输入abcdefghijklmn时,输出abcd
十五、unique函数
unique函数属于STL中比较常用函数,它的功能是元素去重。即”删除”序列中所有相邻的重复元素(只保留一个)。此处的删除,并不是真的删除,而是指重复元素的位置被不重复的元素给占领了。由于它”删除”的是相邻的重复元素,所以在使用unique函数之前,一般都会将目标序列进行排序。
unique函数的函数原型如下:
1.只有两个参数,且参数类型都是迭代器:
iterator unique(iterator it_1,iterator it_2);
这种类型的unique函数是我们最常用的形式。其中这两个参数表示对容器中[it_1,it_2)范围的元素进行去重,返回值是一个迭代器,它指向的是去重后容器中不重复序列的最后一个元素的下一个元素。
unique函数的去重过程实际上就是不停的把后面不重复的元素移到前面来,也可以说是用不重复的元素占领重复元素的位置。
2.unique函数通常和erase函数一起使用,来达到删除重复元素的目的。(注:此处的删除是真正的删除,即从容器中去除重复的元素,容器的长度也发生了变换;而单纯的使用unique函数的话,容器的长度并没有发生变化,只是元素的位置发生了变化)
十六、判断素数
bool isPrim(int x){
if(x==0||x==1)
return false;
if(x==2)
return true;
for(int i=2;i<=sqrt(x)+1;i++)
if(x%i==0)
return false;
return true;
}