如何在Visual C++中复制文件?

kar*_*ari 2 c++ windows visual-c++

我正在使用Visual C++.如何将此文件的内容复制到另一个文件?

UINT32 writeToLog(wstring log)
 {
    wfstream file1 (LOG_FILE_NAME, ios_base::out);  
    file1 << log;       
    file1.close();

     // want to copy file1 to file2

     return 0;
 }
Run Code Online (Sandbox Code Playgroud)

Joe*_*oeG 11

你究竟想做什么?如果您需要数据的副本,可以将其读入并再次将其写回.如果您确实需要该文件的副本,则必须使用特定于操作系统的调用.

在许多情况下,读取文件数据然后将其再次写入不同的文件是一个足够接近副本 - 如下所示:

ifstream file1(...);
ofstream file2(...);
std::copy(istream_iterator<char>(file1),istream_iterator<char>(),ostream_iterator<char>(file2));
Run Code Online (Sandbox Code Playgroud)

然而,这确实不是一个副本 - 它正在创建一个具有相同内容的新文件.它将无法正确处理硬链接或符号链接,它将无法正确处理元数据,它只会"复制" 默认文件流.

如果您需要Windows上的文件副本,则应根据您的具体要求调用CopyFile,CopyFileExCopyFileTransacted之一.