C ++使用头文件复制文本文件程序

时间:2011-04-30 19:44:20

标签: c++ function header-files

您好我正在制作一个应该复制文本文件的程序。文本文件目前只有3行文本。 textFileCopy函数应该在filenamein数组给出的文本文件中读取,然后输出由filenameout数组给出的文本文件的副本。

这是我的main.cpp文件。在这个文件中程序要求用户发送一个输入文件名和一个输出文件名作为我刚刚使用visual studio中的命令参数框完成的参数,命令参数框包含“input.txt output.txt”所以这意味着argv [1]包含输入文件,argv [2]包含要创建的输出文件

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

#include "FileUtilities.h"


int main(int argc, char **argv) {
    FileUtilities fileUtil;
    fileUtil.textFileCopy(false, false);
    if (argc !=3) {
        cerr << "Usage: " << argv[0] << " <input filename> <output filename>" << endl;
        int keypress; cin >> keypress;
        return -1;
    }

    fileUtil.textFileCopy(argv[1], argv[2]);

    int keypress; cin >> keypress;
}

这是FileUtilities.h文件,它声明了textFileCopy函数

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
#pragma once

class FileUtilities
{
public:
    bool textFileCopy(char filenamein[], char filenameout[]);
}; 

这是匹配的FileUtilities.cpp文件,包括textFileCopy函数

#include <iostream>
#include <fstream>
#include <string>

#include "FileUtilities.h"

bool FileUtilities::textFileCopy(char filenamein[], char filenameout[])
{
    ifstream fin(filenamein);
    if(fin.is_open())
    {
        ofstream fout(filenameout);

        char c;
        while(fin.good())
        {
            fin.get(c);
            fout << c;
        }

        fout.close();
        fin.close();

        return true;
    }
    return false;
}

我在.cpp文件中创建.h文件中定义的函数时遇到问题,我从.cpp文件中获取此行FileUtilities::textFileCopy(char filenamein[], char filenameout[])的错误。我知道函数中的实际代码只是第一行

更新

好的,所以我在功能之前放了bool。

现在程序编译并在对话框中出现错误,如下所示

“Microsoft Visual C ++调试库

Debug Assertion失败!

程序:..... Parser.exe 文件f:\ dd \ vctools \ crt_bld \ Self_x86 \ crt \ src \ fopen.c 第53行

表达式:(文件!= NULL)“

然后它在visual studio中打开一个文件“dbghook.c”

2 个答案:

答案 0 :(得分:3)

您需要将返回类型(bool)放在函数名称前面。

bool FileUtilities::textFileCopy(char filenamein[], char filenameout[])

答案 1 :(得分:0)

textFileCopy(false, false)被隐式转换为textFilecopy(NULL, NULL),当您尝试使用NULL文件名打开ifstream时,您会收到您所看到的断言。