我制作了一个小型c ++程序,用于将多个文件从一个文件夹复制到其他文件夹中。例如:我在输入文件夹中有2个名为0.txt和1.txt的文件,我想将0.txt复制到名为1的文件夹和1.txt复制到名为2的文件夹(这些文件夹是先前制作的)。我的示例代码如下:
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include<stdlib.h>
#include<fstream>
#include <sstream>
using namespace std;
#define upper_bound 1 // total number of folders starting from 0
std::string to_string(int i) {
std::stringstream s;
s << i;
return s.str();
}
int main()
{
for( int i=0;i<=upper_bound;i++)
{
string s = ".\\input";
string s1=".\\";
string p= ".txt";
string Input = s;
string CopiedFile = to_string(i)+p;
string OutputFolder = s1+to_string(i);
CopyFile(Input.c_str(), string(OutputFolder+CopiedFile).c_str(), TRUE);
}
}
但是当我运行它时,没有任何东西被复制。这有什么不对吗?我该如何复制这些文件?
答案 0 :(得分:0)
您正在尝试将文件“。\ input.txt”复制到“。\ 1 \ 1.txt
input.txt可能不存在于当前目录中;尝试将此设置为绝对路径
您永远不会创建目录“1”(再次在随机工作目录中)。文档没有说它会为你创建目录,如果它不存在;所以你应该确保它确实&amp;如果没有,请创建它。
答案 1 :(得分:0)
这是函数的语法:
BOOL WINAPI CopyFile(
_In_ LPCTSTR lpExistingFileName, // absolute input path.
_In_ LPCTSTR lpNewFileName, // absolute output path
_In_ BOOL bFailIfExists // to determine if you want to prevent the
//file from being replaced
);
您的输入路径必须是绝对的。您文件的输入路径不是绝对的。它只是处理文件的目录而不是确切的文件。
替换以下
string Input = s;
<强>与强>
string Input = s + String("\\") + to_string(i) + p;
我在输入文件夹中有2个名为0.txt和1.txt的文件
所以你必须直接解决这两个文件。但是对于每次迭代,变量input
只保存字符串".\\input"
,它是目录而不是绝对路径。