我试图将目录重命名为与C ++中的测试中的现有目录相同的名称。我试过SHFileOperation。这实际上很有效。问题是我们有一个auotmated测试,并且由于某种原因在自动测试期间测试失败了。在手动运行时工作正常,但自动化不是那么多。我们认为可能会弹出一些对话框,即使我将标志设置为不允许任何标记。我也尝试重命名C ++函数。尝试将某些内容重命名为现有名称时,重命名似乎无效。
那么我可以使用其他方法吗?
答案 0 :(得分:2)
如果这对您很重要,您可以尝试boost::filesystem
具有便携性的优势。
namespace bfs=boost::filesystem;
std::string name("old_dir", "new_dir");
system::error_code ec = bfs::rename(name, new_name);
ec
是可以引用here的错误代码对象,因此您可以检查错误情况。
答案 1 :(得分:1)
我肯定会寻求提升,但如果你不能使用它,你必须知道C ++没有内置支持这种文件操作。
你能做的最好就是使用C的重命名():
答案 2 :(得分:0)
您可以尝试MoveFile,它也适用于目录。 虽然我怀疑是否有任何API能够将某些内容重命名为已存在的名称。 https://msdn.microsoft.com/en-us/library/windows/desktop/aa365239(v=vs.85).aspx