使用运算符"+" "Merging two files"
"Merging two files" using operator "+"
我想知道,是否可以编写这样的代码:
File1("dataOut.txt")=File2("Data1.txt")+File3("Data2.txt")
我相信我寻求的是通过operator+
实现级联。如果我错了,请纠正我,但我必须在某个地方让接线员超载吗?
我知道直接将两个文件中的内容复制到输出文件中可能会更容易,但我希望使用operator+
。
C++并没有为抽象逻辑提供一些神奇的处理,它不能仅仅计算出File1=File2+File3
意味着要将两个文件合并在一起。
首先,这些变量必须是某种形式的"类型",并且要有你想要的逻辑,一种你自己设计的类型。它将由作为文件名的std::string
构造而成。然后,您需要定义一个operator+
,这个操作符必须知道如何组合文件名来生成一个新的文件,然后在操作系统中创建一个新文件,然后添加其他两个文件的内容,最后返回一个具有此新文件名的此类型的新实例。
正如我在评论中所说,你真的不应该这样做。一般来说,您不应该在C++中重载运算符,除非这样做有非常明确和明显的结果。例如,一个(数学)向量类,相当清楚vector_a + vector_b
会(应该)做什么。然而,这些"文件"并不那么清楚,只是看看人们必须问的问题。只要其中一个就应该发出一个巨大的红旗,表明这不是一个好主意。
你应该只使用一个"正常"函数来做你想做的事情,用一个名字来说明发生了什么
不幸的是,您不能像那样将两个文件添加在一起
相反,您必须使用fstream
库中的ifstream
和ofstream
下面是一个可以使用的例子
std::ifstream file1( "Data1.txt" ) ;
std::ifstream file2( "Data2.txt" ) ;
std::ofstream combined_file( "dataOut.txt" ) ;
combined_file << file1.rdbuf() << file2.rdbuf() ;
相关文章:
- 我遇到了黑客排名中的问题"TWO STRINGS"的三个测试用例的分段错误。原因是什么?
- 为什么 C++ 编译器在"c:program filesgnu emacsinclude"中查找包含文件?
- 'Cannot add two pointers'添加带有 WCHAR 的 LPCWSTR
- LeetCode #617 "Merge Two Binary Trees"使用C++
- MFC 对话框控件的"Accept Files"选项如何工作?
- 以简单格式"c:filessample.txt"从用户读取文件路径
- /usr/include/boost/filesystem/path.hpp:307:未定义对'boost::files
- MinGW在代码块中构建时的ar.exe "could not create temporary file whilst writing archive: no more archived files
- 标准Windows 7用户如何能够删除C:Program Files下的文件
- 通过QT播放mov-files
- 错误 PRJ0002:错误结果 -1073741515 从"C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\cl.
- 使用运算符"+" "Merging two files"
- "two-graph"的最短路径,更改次数有限
- header / cpp files
- one.cpp和two.cpp都包含两个.h
- 如何在Program Files文件夹中复制文件或文件夹
- How to Blend two texture in OpenGL ES 1
- OPENGL Two LoadIdentitys
- 将tess-two(Tesseract Tools for Android)库集成到Android工作室并构建ndk的问
- 不要用"two-stage name lookup"得到它