"合并两个文件"使用运算符" +"

时间:2015-04-28 17:10:06

标签: c++ file operator-overloading concatenation

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

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

我相信我寻求的是通过operator+实现连接。 如果我错了,请纠正我,但我不得不在某个地方重载那个操作员?

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

2 个答案:

答案 0 :(得分:2)

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

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

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

你应该使用正常的'能够做你想做的事情,有一个名字可以清楚地知道发生了什么。

答案 1 :(得分:0)

很遗憾,您无法像这样添加两个文件

相反,您必须使用ifstream库中的ofstreamfstream

以下是您可以使用的示例

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