Хидер convenience.hpp обеспечивает удобные функции, которые комбинируют вызовы низкоуровневых функций для выполнения некоторых полезных действий.
Содержание
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(),
начинающаяся с последней точки и до конца строки. Иначе,
возвращается пуская строка.
Обоснование:
Символ точки включается в возвращаемое значение, так что можно определить, пустое ли расширение или оно отсутствует совсем.
Было отмечено, что такое определение расширения файла не достаточно для использования Альтернативных потоков данных — специфическая особенность файловой системы NTFS. Однако, семантика в этом случае не совсем ясна, и текущее определение расширения достаточно полезно.
Благодарности: 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