可以酌情用find_first_of,find_first_not_of,find_last_of,find_last_not_of替换find
判断pattern是否在str中是否唯一
str.find(pattern) == str.rfind(pattern)
查找str中pattern的所有位置
for (size_t pos = 0; (pos = str.find(pattern, pos)) != string::npos; pos++) {
cout << pos << endl;
}
类似于python里的string split,然后翻转每个field。以’ '为分隔符为例
for (string::size_type lo = 0, hi = str.find(' ');
lo != string::npos && lo <= str.size();
lo = (hi == string::npos) ? hi : hi+1, hi = str.find(' ', lo)) {
reverse(str.begin()+lo, (hi == string::npos) ? str.end() : str.begin()+hi);
}
split的另类实现
string str("aa bb cc dd"), tmp;
for (stringstream ss(str); getline(ss, tmp, ' '); ) {
cout << tmp << endl;
}
判断容器内的每个元素是否相等
equal(next(vec.begin()), vec.end(), vec.begin());
获取只包含x(int等整数类型)最右侧的1的数
(x & (x-1)) ^ x