使用运算符"+" "Merging two files"

"Merging two files" using operator "+"

本文关键字:two files Merging 运算符      更新时间:2023-10-16

我想知道,是否可以编写这样的代码:

File1("dataOut.txt")=File2("Data1.txt")+File3("Data2.txt")

我相信我寻求的是通过operator+实现级联。如果我错了,请纠正我,但我必须在某个地方让接线员超载吗?

我知道直接将两个文件中的内容复制到输出文件中可能会更容易,但我希望使用operator+

C++并没有为抽象逻辑提供一些神奇的处理,它不能仅仅计算出File1=File2+File3意味着要将两个文件合并在一起。

首先,这些变量必须是某种形式的"类型",并且要有你想要的逻辑,一种你自己设计的类型。它将由作为文件名的std::string构造而成。然后,您需要定义一个operator+,这个操作符必须知道如何组合文件名来生成一个新的文件,然后在操作系统中创建一个新文件,然后添加其他两个文件的内容,最后返回一个具有此新文件名的此类型的新实例。

正如我在评论中所说,你真的不应该这样做。一般来说,您不应该在C++中重载运算符,除非这样做有非常明确和明显的结果。例如,一个(数学)向量类,相当清楚vector_a + vector_b会(应该)做什么。然而,这些"文件"并不那么清楚,只是看看人们必须问的问题。只要其中一个就应该发出一个巨大的红旗,表明这不是一个好主意。

你应该只使用一个"正常"函数来做你想做的事情,用一个名字来说明发生了什么

不幸的是,您不能像那样将两个文件添加在一起

相反,您必须使用fstream库中的ifstreamofstream

下面是一个可以使用的例子

std::ifstream file1( "Data1.txt" ) ;
std::ifstream file2( "Data2.txt" ) ;
std::ofstream combined_file( "dataOut.txt" ) ;
combined_file << file1.rdbuf() << file2.rdbuf() ;