我试图通过重载“=”运算符将一个文件的内容复制到另一个文件中。 我想做的事情就像我写的那样,file2 = file1,file1的内容将被写入file2。 但我的代码没有这样做。 这是我到目前为止所做的。
Dim methods As New Dictionary(Of String, Action)
methods.Add("RP1", AddressOf CreateRP1)
methods.Add("RP2", AddressOf CreateRP1)
' ...
methods(userInput).Invoke()
答案 0 :(得分:4)
问题似乎来自您的函数setContent
中的以下行:
std::ofstream file(filePath);
使用的变量filepath
是作为参数传递的变量(原始路径不是目标路径)。您正在尝试从原点到原点进行复制。
答案 1 :(得分:3)
我可以在您提供的代码中看到几个问题:
在方法setContent中,filePath参数隐藏了成员filePath,因为它们具有相同的名称。因为它是打开filePath参数给出的文件(不是由此表示的文件)并写入参数内容的值。您要做的是完全删除filePath参数。这样它就会将内容写入由此表示的文件。
在构造函数中,当你调用getline时,你不是在读取文件的全部内容,而是只读第一行。要阅读整个内容,您应该迭代读取行并将它们附加到您的字符串。您可以使用以下代码执行此操作:
#include <fstream>
#include <string>
#define BUFF_SIZE 512
std::string ReadFile(const char* fileName)
{
std::string ret;
std::ifstream ifs(fileName);
char buff[BUFF_SIZE];
do {
ifs.read(buff, BUFF_SIZE);
ret.append(buff, ifs.gcount());
} while (!ifs.eof());
return ret;
}
这对你想要做的事情并不重要,但记住它是件好事。在赋值运算符中,最好通过const引用传递参数(const EasyFile&amp; file而不仅仅是EasyFile)。您需要通过在签名末尾和左大括号前附加关键字const来将getter方法标记为const。