C++ 为filesystem::copy in C+;使用多个复制选项+;
我正在使用C++ 为filesystem::copy in C+;使用多个复制选项+;,c++,c++17,C++,C++17,我正在使用文件系统复制目录。我希望递归复制目录并覆盖任何现有文件 我使用下面的代码复制目录,它可以正常工作。但是,我只能为复制选项设置递归或覆盖现有,而不能同时设置这两个选项 filesystem::copy(pathInput, pathOutput, filesystem::copy_options::recursive); 是否有一种方法可以使用复制功能的多个选项 我使用它作为选项的参考,但它没有说明同时使用多个选项。它们是位标志,所以 filesystem::copy(pathInpu
文件系统
复制目录。我希望递归复制目录并覆盖任何现有文件
我使用下面的代码复制目录,它可以正常工作。但是,我只能为复制
选项设置递归
或覆盖现有
,而不能同时设置这两个选项
filesystem::copy(pathInput, pathOutput, filesystem::copy_options::recursive);
是否有一种方法可以使用复制功能的多个选项
我使用它作为选项的参考,但它没有说明同时使用多个选项。它们是位标志,所以
filesystem::copy(pathInput, pathOutput, filesystem::copy_options::recursive | filesystem::copy_options::overwrite_existing)
为了添加更多细节,在较低的级别上,每个标志都是一个整数中的一位(开/关),因此
01=覆盖10=递归11=两者00=无
|运算符为二进制或,如果其中一位(或两位)为真,则等于真,因此:
01 | 10=11
00 | 11=11
11 | 11=11
00 | 00=00
他们被咬了,所以
filesystem::copy(pathInput, pathOutput, filesystem::copy_options::recursive | filesystem::copy_options::overwrite_existing)
为了添加更多细节,在较低的级别上,每个标志都是一个整数中的一位(开/关),因此
01=覆盖10=递归11=两者00=无
|运算符为二进制或,如果其中一位(或两位)为真,则等于真,因此:
01 | 10=11
00 | 11=11
11 | 11=11
00 | 00=00
使用您提供的参考站点,它在常量定义的正上方显示 以下每个选项组中最多只能有一个复制选项,否则复制函数的行为未定义
因此,您可以只做其他人所说的和/或这两个值,因为它们来自不同的选项组。使用您提供的参考站点,它在所使用的常量定义之上 以下每个选项组中最多只能有一个复制选项,否则复制函数的行为未定义
因此,您可以按照其他人所说的做,或者将这两个值放在一起,因为它们来自不同的选项组。它们正是位标志。请参阅:“
copy\u options
满足BitmaskType
的要求(这意味着按位运算符运算符&
,运算符^
,运算符
,运算符&=
,运算符&=
,以及运算符^=
。”谢谢,我试图使用位运算符&
而不是
。更新了我的代码,现在可以工作了。它们正是位标志。请参阅:“copy\u options
满足BitmaskType
的要求(这意味着按位运算符运算符&
,运算符^
,运算符
,运算符&=
,运算符&=
,以及运算符^=
。”谢谢,我试图使用位运算符&
而不是
。更新了我的代码,现在就可以使用了。OP:您链接到的页面上有正确的copy_选项,这些选项满足BitmaskType的要求(这意味着为该类型定义了位运算符&、运算符|、运算符^、运算符~、运算符&=、运算符|=、运算符^=)。无表示空位掩码;其他每一个枚举数都表示一个不同的位掩码元素。OP:您链接到的页面上有权使用copy_选项满足BitmaskType的要求(这意味着为该类型定义了位运算符&、运算符|、运算符^、运算符~、运算符&=、运算符|=、运算符^=)。无表示空位掩码;其他每个枚举数表示一个不同的位掩码元素。