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

CMake の実行: 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