2012-05-23 103 views
0

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

那么有没有其他方法可以使用?

+1

您是否使用绝对目录路径或相对路径?如果路径是相对的,则可能是自动测试从不同的地方启动,并且重命名的目录不存在于那里。 – Brady

+1

我看不出你如何重命名一些东西,并让新名称成为现有对象的名称。这总会失败。 –

+0

http://stackoverflow.com/questions/3764822/how-to-durably-rename-a-file-in-posix – sehe

回答

1

你可以试试boost::filesystem,如果这对你很重要的话,它具有便携性的优点。

namespace bfs=boost::filesystem; 

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

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

ec是和,可以被引用here错误代码的对象,所以你可以检查错误条件。

+0

我不得不下载boost库,不幸的是这不是一个选项。 – discodowney