1.getline()
便于整行读入,可以记录空格(直接cin不行),但是不能记录回车,与stringstream 结合可以简单分割字符串。
例:
string str;
getline(cin,str);//读入一串字符串
stringstream iss(str);
string seg;
while(getline(iss,seg,'~'))//将输入的字符串以字符'~'分割
2.substr()
用于截取字符串的一部分,不会修改原字符串
string a = "abcdefg";
string b = a.substr(2,4);//从是a[2]开始截取4个数;
cout << b << endl;
//结果应该是"cdef"
string c = a.substr(2);//从是a[2]开始截取到最后;
cout << c << endl;
//结果应该是"cdefg"
3.stoi()
string转int没啥好说的;
4.bitset < n >
转n位二进制,多的去除,不够补0,.count()可以直接输出1的个数。
int a = 5;
bitset<3> b(a);
count << b.count << endl;
//输出应该是2
5.sort()
快速排序
vector<int> num = {0,1,24,2,5,6};
sort(num.begin(),num.end());
//num以升序排序
- priority_queue<_Node>堆排序
C++中STL默认是大根堆,大的数据在队首,比较运算符是 < ;重载运算符可以自定义排序优先级
priority_queue<int> a;
vector<int> num = {1,5,6,2,4,3,8,9};
for(int n:num) a.push(n);
while(!a.empty())
{
cout << a.top() << " ";
a.pop();
}
//输出结果:9 8 6 5 4 3 2 1
struct _Node{
int key;
int weight;
_Node(int _key,int _weight)
{
key = _key;
weight = _weight;
}
friend bool operator <(const _Node &a,const _Node &b)
{
return a.key > b.key;
}
};
priority_queue<_Node> myque;//以key值大小排序,key值小的排前面
- & << ~
& 将两数的二进制位全部进行AND操作;
<< 数字二进制位左移
~ 数字二进制所有位全部取反
8.find_last_of()
找到字符在字符串中最后出现的位置
string a = "aff~st87";
int pos = a.find_last_of('~');
cout << pos <<endl;
//输出结果是3