ОбъявлениеОписание
template void trim(Seq& s, const locale& loc = locale());Обрезает пробелы с обоих концов строки, используя для классификации пробельных символов функцию классификации локали
template void trim_if(Seq& s, Pred p);Обрезает с обоих концов последовательности s элементы для которых p(*it) равно true, где it — это итератор, указывающий на элемент последовательности. Обрезка прекращается, когда p(*it) = false
template Seq trim_copy(const Seq& s, const locale& loc = locale());Делает то же самое, что и trim, но вместо изменения s возвращает новую последовательность, содержащую обрезанные результаты
template Seq trim_copy_if(const Seq& s, Pred p);Делает то же самое, что и trim_if, но вместо изменения s возвращает новую последовательность, содержащую обрезанные результаты
template OutIt trim_copy_if(OutIt out, const Coll& c, Pred p);Делает то же, что и предыдущая версия 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.

Пример 4.5. Использование функций обрезки строк Boost

#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());

Перейти на страницу:

Похожие книги