| Объявление | Описание |
|---|---|
template | Обрезает пробелы с обоих концов строки, используя для классификации пробельных символов функцию классификации локали |
template | Обрезает с обоих концов последовательности s элементы для которых p(*it) равно true, где it — это итератор, указывающий на элемент последовательности. Обрезка прекращается, когда p(*it) = false |
template | Делает то же самое, что и trim, но вместо изменения s возвращает новую последовательность, содержащую обрезанные результаты |
template | Делает то же самое, что и trim_if, но вместо изменения s возвращает новую последовательность, содержащую обрезанные результаты |
template | Делает то же, что и предыдущая версия trim_copy_if, но с некоторыми отличиями. Во-первых, она дает гарантию строгой безопасности исключений. Во-вторых, она в качестве первого аргумента принимает выходной итератор и возвращает выходной итератор, указывающий на одну позицию после конца результирующей последовательности. Наконец, она принимает тип коллекции, а не последовательности. За дополнительной информацией обратитесь к списку перед этой таблицей |
trim_left trim_right | Работает как trim, но только для левого или правого конца строки |
trim_left_if trim_right_if | Работает как trim_if, но только для левого или правого конца строки |
trim_left_copy trim_right_copy | Работает как trim_сору, но только для левого или правого конца строки |
trim_left_copy_if trim_right_copy_if | Работает как trim_copy_if, но только для левого или правого конца строки. Обе функции имеют две версии — одна работает с последовательностью, а другая — с коллекцией |
Первые четыре шаблона функции, описанные в табл. 4.1, — это базовая функциональность функций обрезки библиотеки String Algorithms. Остальные являются вариациями на их тему. Чтобы увидеть некоторые из них в действии, посмотрите на пример 4.5. Он показывает некоторые преимущества от использования этих функций перед методами string.
#include
#include
#include
using namespace std;
using namespace boost;
int main() {
string s1 = " ведущие пробелы?";
trim_left(s1); // Обрезка оригинальной строки
string s2 = trim_left_copy(s1); // Обрезка, но оригинал остается без изменений
cout << "s1 = " << s1 << endl;
cout << "s2 = " << s2 << endl;
s1 = "YYYYboostXXX";
s2 = trim_copy_if(s1, is_any_of("XY")); // Используется предикат
trim_if(s1, is_any_of("XY"));
cout << "s1 = " << s1 << endl;
cout << "s2 = " << s2 << endl;
s1 = "1234 числа 9876";
s2 = trim_copy_if(s1, is_digit());