BOOST C++: boost/filesystem/convenience.hpp

Хидер convenience.hpp обеспечивает удобные функции, которые комбинируют вызовы низкоуровневых функций для выполнения некоторых полезных действий.

Содержание

create_directories

extension

basename

change_extension

create_directories

void create_directories( const path & ph );

Предусловие: ph.empty() ||
forall p: p == ph || is_parent(p, ph): is_directory(p) || !exists( p )

Послеусловие: exists(ph) && is_directory(ph)

Разработчик - Vladimir Prus.

extension

std::string extension( const path & ph );

Возвращает: если ph.leaf() содержит символ точки  ('.'), то возвращается подстрока ph.leaf(), начинающаяся с последней точки и до конца строки. Иначе, возвращается пуская строка.

Обоснование:

Благодарности: Carl Daniel и Pavel Vozenilek обратили внимание и обсудили вопрос с альтернативными потоками данных.

Разработчик: Vladimir Prus.

basename

std::string basename( const path & ph );

Возвращает: если ph.leaf() содержит точку ('.'), то возвращается подстрока ph.leaf() начиная с начала строки и заканчивая последней точкой (точка не включается). Иначе возвращается ph.leaf()

Разработчик Vladimir Prus.

change_extension

path basename( const path & ph, const std::string & new_extension );

Послеусловие: basename(return_value) == basename(ph) && extension(return_value) == new_extension

Замечание: Из смысла определения extension следует, что new_extension содержать точку, чтобы получить разумный результат.

Обоснование: В прежних версиях эта функция имела предусловие !ph.leaf().empty(). Не ясно, правильно ли это было или нет. Смена расширения для пустого пути выглядит бессмысленной операцией. С другой стороны, ценность такого предусловия была сомнительной: лучше делать проверку пути после его получения от пользователя. В итоге было принято решение убрать предусловие.

Разработчик: Vladimir Prus.


Revised 25 мая, 2005

© Copyright Vladimir Prus, 2003

Use, modification, and distribution are subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at www.boost.org/LICENSE_1_0.txt)

последняя правка: 25.05.2005

библиотека BOOST C++ http://www.boost.org
перевод Elijah Koziev www.solarix.ru

  © Mental Computing 2010