【问题标题】:"Merging two files" using operator "+"使用运算符“+”“合并两个文件”
【发布时间】:2015-07-07 16:16:09
【问题描述】:

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

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

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

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

【问题讨论】:

  • File1,File2,File3是什么变量?
  • .. 当然,File1File2File3 是您自己编写的某种类类型。对吗?
  • 绝对有可能,但绝对不要这样做。
  • 不,对于 File1 等,我的意思是具有随机内容(数字、字符串..)的常规(比如说).txt 文件
  • 如何在程序中表示那些 .txt 文件?

标签: c++ file operator-overloading concatenation


【解决方案1】:

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

您必须使用 fstream 库中的 ifstreamofstream

这是一个你可以使用的例子

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

【讨论】:

  • 是的......这显示了如何将两个文本文件的内容复制到第三个文件的基本示例......虽然并没有真正解决这个问题。
【解决方案2】:

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

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

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

您应该只使用“正常”功能来做您想做的事情,其名称可以清楚地说明正在发生的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 2013-10-02
    • 2013-04-22
    相关资源
    最近更新 更多