0

MINGW v. 8.0
-- C 编译器标识是 GNU 10.2.0
-- CXX 编译器标识是 GNU 10.2.0
-- 检查工作 C 编译器:P:/MSYS2/mingw64/bin/gcc.exe
-- 检查工作 C 编译器:P:/MSYS2/mingw64/bin/gcc.exe - 工作

试图运行:


#include <iostream>
#include <fstream>
#include <filesystem>

namespace fs = std::filesystem;

constexpr auto * f1 ="C:\\TEMP\\fred_test.txt";
constexpr auto * f2 ="C:\\TEMP\\fred_test.txt~";

void create_file(char const* p){
    std::ofstream ofs1{p};
}

int main() {
    try{
        fs::remove(f1);
        fs::remove(f2);
        create_file(f1);
        create_file(f2);
        fs::copy_file(f1, f2, fs::copy_options::overwrite_existing);
        std::cout << "success" << std::endl;
    } catch (fs::filesystem_error const& fe) {
        std::cout << fe.what() << std::endl;
    }
}

给出以下输出:


filesystem error: cannot copy file: File exists [C:\TEMP\fred_test.txt] [C:\TEMP\fred_test.txt~]

使用 msvc:


success

使用以下命令运行 C​​Make:P:\MSYS2\mingw64\bin\cmake.exe -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - MinGW Makefiles" C:[***]\test_fs


cmake_minimum_required(VERSION 3.17)
project(test_fs)
set(CMAKE_CXX_STANDARD 20)
add_executable(test_fs main.cpp)

有人也可以重现这个吗?

4

0 回答 0