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

标签 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;
 }

最佳答案

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

在许多情况下,读取文件数据然后再次将其写出到不同的文件是一个足够接近拷贝的近似值 - 如下所示:

ifstream file1(...);
ofstream file2(...);
std::copy(istream_iterator<char>(file1),istream_iterator<char>(),ostream_iterator<char>(file2));

然而,这实际上不是拷贝 - 它正在创建一个具有相同内容的新文件。它不会正确处理硬链接(hard link)或符号链接(symbolic link),它不会正确处理元数据,它只会“复制”default file stream。 .

如果您需要在 Windows 上复制文件,您应该调用 CopyFile 之一, CopyFileExCopyFileTransacted取决于您的具体要求。

关于c++ - 如何在 Visual C++ 中复制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2763987/

相关文章:

c++ - 反转由空格分隔的字符串的元素返回比原始字符串更大的字符串

c++ - 为什么这个串行/调制解调器代码会弄乱我的终端显示?

php - 如何更新与 PHP 捆绑的 SQLite 版本

c++ - 无法在 MFC/C++ 项目中将参数 1 从 'const wchar_t *' 转换为 'LPCTSTR'

c - 如何从 Windows 内核获取电池电量级别的通知?

python - 操作系统错误 : socket no longer exists (Python IDLE error)

c++ - 在已编译的 ROOT (CERN) 应用程序中将 TCanvas 绘制到屏幕上

c++ - IWebBrowser2 可以将 cookie 存储在用户指定的文件夹中吗?

c - 如何在 gcc 中执行 C89 风格的变量声明?

c++ - 使用 Chrono 进行时间测量