Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 删除boost::filesystem创建的tmpfile的优雅方式是什么?_C++_Boost_Raii - Fatal编程技术网

C++ 删除boost::filesystem创建的tmpfile的优雅方式是什么?

C++ 删除boost::filesystem创建的tmpfile的优雅方式是什么?,c++,boost,raii,C++,Boost,Raii,我有一个代码片段 如果(!boost::filesystem::exists(tempDir)){ boost::filesystem::create_目录(tempDir); } auto path=tempDir/boost::filesystem::unique_path(“gfbfv1-%%-old”); 做一些你可以扔的东西(路径); 移除(路径); 我如何确保即使在抛出do\u something\u maybrow的情况下,路径也始终被删除 我应该编写一个FileDeleter,

我有一个代码片段

如果(!boost::filesystem::exists(tempDir)){
boost::filesystem::create_目录(tempDir);
}
auto path=tempDir/boost::filesystem::unique_path(“gfbfv1-%%-old”);
做一些你可以扔的东西(路径);
移除(路径);
我如何确保即使在抛出
do\u something\u maybrow
的情况下,路径也始终被删除

我应该编写一个
FileDeleter
,它采用一个路径并在析构函数上删除该路径,析构函数利用所谓的
RAII
概念,还是存在一个现有的解决方案

我应该写一个FileDeleter,它采用一个路径,并在利用所谓RAII概念的析构函数上删除该路径吗

这是一个相当合理的解决办法。小心处理删除可能引发的任何异常,因为您不想从析构函数中抛出,特别是从由于抛出异常而正在执行的析构函数中抛出


但是,如果这不是一个常用的结构,因此不需要一个可重用的解决方案,那么一个简单的临时替代方案就是使用Scope Guard。

这正是我要寻找的,我使用了关键字
defer
,但找不到这个库。这是因为它不延迟任何事情。它使他们在一个确定的时间运行。@ SEHE,实际上与Grangand Swift中的代码<代码> DEFER < /C++ >非常相似。