1

我试图将目录重命名为与 C++ 测试中的现有目录相同的名称。我试过 SHFileOperation。这实际上主要工作。问题是我们有一个自动测试,由于某种原因,在自动测试期间,测试在这里失败了。在手动运行时工作正常,但自动化不是那么多。我们认为即使我将标志设置为不允许,也可能会弹出一些对话框。我还尝试重命名 C++ 函数。尝试将某些内容重命名为现有名称时,重命名似乎不起作用。

那么我还有其他方法可以使用吗?

4

3 回答 3

2

如果这对您很重要,您可以尝试boost::filesystem哪个具有便携性的优势。

namespace bfs=boost::filesystem;

std::string name("old_dir", "new_dir");

system::error_code ec = bfs::rename(name, new_name);

ec可以在此处引用的is 和错误代码对象,以便您检查错误情况。

于 2012-05-23T13:10:23.067 回答
1

我肯定会选择 boost,但如果你不能使用它,你必须知道 C++ 没有对此类文件操作的内置支持。

你能做的最好的就是使用 C 的 rename():

http://en.cppreference.com/w/c/io/rename

于 2012-05-23T14:04:29.027 回答
0

您可以尝试也适用于目录的 MoveFile。尽管我怀疑是否有任何 API 能够将某些内容重命名为已经存在的名称。 https://msdn.microsoft.com/en-us/library/windows/desktop/aa365239(v=vs.85).aspx

于 2016-12-07T14:29:38.923 回答