c++常用函数/STL(持续更新中·····)
本人大二,写博客只是为了积累学过的知识!!!
正在自学算法,有兴趣的私信一起学习呀!!!
寒假冲冲冲!!!
输入/输出技巧
cin讲解
cin 可以连续从键盘读取想要的数据,以空格、tab 或换行作为分隔符
当 cin>> 从缓冲区中读取数据时,若缓冲区中第一个字符是空格、tab或换行这些分隔符时,cin>> 会将其忽略并清除,继续读取下一个字符,若缓冲区为空,则继续等待。但是如果读取成功,字符后面的分隔符是残留在缓冲区的,cin>> 不做处理。
1、
当定义了一个字符串数组时,可以直接用 cin 读入一个字符串
char a [N];
cin>>a+1; //从下标为1的地方开始
2、
可以用 cin 读取用空格隔开的字符
例:假设输入3个操作符(中间用空格隔开)
a b c
char s[4];
for(int i=0;i<3;i++)
cin>>s[i]; //会自动忽略掉中间的空格
3、puts()函数
头文件:#include<stdio.h>
puts()函数用于将一字符串放到标准输出流(stdout)中,并在最后增加换行符 ‘\n’,其函数原型如下:
int puts(char *string);
【参数】string为要输出的字符串。
最主要是输出自动换行
printf("%s\n", name);
puts(name); //第一种使用方法
二者是等价的
puts("hello world");//第二种使用方法
unique去重函数
unique(begin,end)
begin 首地址 end 最后一个元素的后一个地址
unique()是C++标准库函数里面的函数,其功能是去除相邻的重复元素(只保留一个),所以使用前需要对数组进行排序
那它是怎么实现去重的呢?删除?
不是,它并没有将重复的元素删除,而是把重复的元素放到数组的最后面藏起来了,函数最终结果返回重复元素开始的首地址。
例:
int a[15]={0,8,41,1,5,5,8,9,45,88,99,5,99,88,8};
sort(a, a + 15);
cout << "a数组排好序的序列" << endl;
for (auto c : a)
cout << c << ' ';
puts("");
int *p=unique(a, a + 15);
cout << "a数组去重后的序列" << endl;
for (auto c : a)
cout << c << ' ';
cout << endl<<"unique 函数返回的地址处的值" << endl;
cout << *p;
输出
字母大小写
C库函数 int tolower(int c)转换给定的字母为小写。
C库函数 int toupper(int c)转换给定的字母为大写。
例:将 s 变成小写字符串
string s;
string get_lower(string s=a)
{
string res;
for(auto c:s)
res+=tolower(c); //string 字符串可以直接相加减
return res;
}
s=get_lower(s);
strcmp函数
头文件:#include <string.h>
strcmp() 用来比较字符串(区分大小写),其原型为:
int strcmp(const char *s1, const char *s2);
【参数】s1, s2 为需要比较的两个字符串。
字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。strcmp()首先将s1 第一个字符值减去s2 第一个字符值,若差值为0 则再继续比较下个字符,若差值不为0 则将差值返回。例如字符串"Ac"和"ba"比较则会返回字符"A"(65)和’b’(98)的差值(-33)。
【返回值】
若参数s1 和s2 字符串相同则返回0。
s1 若大于s2 则返回大于0 的值。
s1 若小于s2 则返回小于0 的值。
本人水平有限,如有错误敬请指正!!!