Использование нескольких вариантов копирования для файловой системы :: copy в C ++ - PullRequest
0 голосов
/ 18 января 2019

Я использую filesystem для копирования каталога. Я хочу, чтобы каталог копировался рекурсивно и перезаписывал любые существующие файлы.

Я использую следующий код для копирования каталога, и он работает. Однако я могу установить recursive ИЛИ overwrite_existing только для copy_options, но не для обоих.

filesystem::copy(pathInput, pathOutput, filesystem::copy_options::recursive);

Есть ли способ использовать несколько опций с функцией копирования?

Я использую этот сайт в качестве ссылки для опций, но он ничего не говорит об использовании более чем одного варианта одновременно.

Ответы [ 2 ]

0 голосов
/ 18 января 2019

На указанном вами ссылочном сайте прямо над константой указано, что

Может присутствовать не более одного параметра копирования в каждой из следующих групп параметров, в противном случае поведение функций копированияundefined.

Таким образом, вы можете просто делать то, что говорят все остальные, и / или два значения вместе, так как они из разных групп опций.

0 голосов
/ 18 января 2019

Они битовые флаги, поэтому

filesystem::copy(pathInput, pathOutput, filesystem::copy_options::recursive | filesystem::copy_options::overwrite_existing)

Чтобы добавить дополнительные детали, на более низком уровне каждый флаг является битом (вкл / выкл) в целом числе, так что ...

01 = перезаписать 10 = рекурсивно 11 = оба 00 = нет

| Оператор является двоичным или равен true, если бит (или оба) равен true, поэтому:

01 | 10 = 11

00 | 11 = 11

11 | 11 = 11

00 | 00 = 00

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...