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

"Merging two files" using operator "+"

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

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

我相信我寻求的是通过operator+实现串联。 如果我错了请纠正我,但我必须在某处重载该运算符?

我知道将两个文件的内容直接复制到输出文件中可能会更容易,但我想用 operator+ 来完成。

很遗憾,您不能像那样将两个文件加在一起

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

这是您可以使用的示例

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

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

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

正如我在评论中所说的那样,你真的不应该这样做。一般来说,你不应该在 C++ 中重载运算符,除非这样做有非常清晰和明显的结果。例如,一个(数学)向量 class,相当清楚 vector_a + vector_b 会(应该)做什么。不过,这些'files',就不是很清楚了,看看大家问的问题就知道了。只有其中一个应该引起一个大的危险信号,这不是一个好主意。

您应该只使用 'normal' 函数来做您想做的事情,其名称可以清楚地说明正在发生的事情。