gpt4 book ai didi

c++ - 将多个文件合并为一个

转载 作者:行者123 更新时间:2023-11-30 02:50:14 24 4
gpt4 key购买 nike

好的,所以我想将多个文件连接成一个。问题是最终文件是空的。我想知道如何在不覆盖的情况下将内容写入文件等等。这是我的代码。提前致谢!

    void concatenate()
{
fstream fileToConcatenate, result;
unsigned numberOfFiles = 0;
char fileName[MAX], finalFileName[MAX];
puts("Please tell me how many files you want to concatenate.");
cin >> numberOfFiles;
puts("Please tell me data for the resulted file.\n*Hint: full path followed by the file name.\n*E.g:C:\\Users\\IoanaAlexandra\\test.txt");
cin >> finalFileName;
result.open(finalFileName, ios::out|ios::ate);
for (unsigned i = 0; i < numberOfFiles; i++)
{
switch (i)
{
case 0:puts("Please tell me the file data for the first file to be concatenated.\n*Hint: full path followed by the file name.\n*E.g:C:\\Users\\IoanaAlexandra\\test.txt"); break;
case 1:puts("Please tell me the file data for the second file."); break;
case 2:puts("Please tell me the file data for the third file."); break;
default:cout << "Please tell me the file data for the " << i << "th file."; break;
}
cin >> fileName;
fileToConcatenate.open(fileName, ios::in);
if (result.is_open())
{
if (fileToConcatenate.is_open())
{
result << fileToConcatenate.rdbuf();
}
else
{
puts("The file you are trying to concatenate from doesn't exist!Try again!");
concatenate();
}
}
else
{
puts("The result file could not be created! Try again!");
concatenate();
}
}
fileToConcatenate.close();
result.close();
}

最佳答案

从循环外部移除 result.open() 并尝试将您的代码更改为如下内容:

 fileToConcatenate.open(fileName, ios::in);
if (fileToConcatenate.is_open())
{
// open output file
result.open(finalFileName, ios::out|ios::ate);
// you should check so the output file really was opened correctly here
result << fileToConcatenate.rdbuf();
// close the input file
fileToConcatenate.close();
// close output file
result.close();
}
else
{
puts("The file you are trying to concatenate from doesn't exist!Try again!");
concatenate();
}

如果 fileToConcatenate 在再次调用 concatenate() 之前打开,您还应该关闭它。

关于c++ - 将多个文件合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20601086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com