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

C++ C++;使用头文件复制文本文件程序,c++,function,header-files,C++,Function,Header Files,你好,我正在制作一个程序,应该是复制一个文本文件。文本文件目前只有3行文本。textFileCopy函数应该读入filenamein数组给出的文本文件,然后输出filenameout数组给出的文本文件副本 这是我的主.cpp文件。在这个文件中,程序要求用户发送一个输入文件名和一个输出文件名作为参数,这是我刚才在visual studio中使用命令参数框完成的,命令参数框包含“input.txt output.txt”,这意味着argv[1]包含输入文件,argv[2]包含要创建的输出文件 #in

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

这是我的主.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;
}
#包括
#包括
#包括
使用名称空间std;
#包括“FileUtilities.h”
int main(int argc,字符**argv){
FileUtilities fileUtil;
fileUtil.textFileCopy(false,false);
如果(argc!=3){
cerr按键;
返回-1;
}
textFileCopy(argv[1],argv[2]);
int按键;cin>>按键;
}
这是FileUtilities.h文件,它声明了textFileCopy函数

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

class FileUtilities
{
public:
    bool textFileCopy(char filenamein[], char filenameout[]);
}; 
#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;
}
#包括
#包括
#包括
使用名称空间std;
#布拉格语一次
类文件实用程序
{
公众:
bool textFileCopy(char filenamein[],char filenameout[]);
}; 
下面是匹配的FileUtilities.cpp文件,包括textFileCopy函数

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

class FileUtilities
{
public:
    bool textFileCopy(char filenamein[], char filenameout[]);
}; 
#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;
}
#包括
#包括
#包括
#包括“FileUtilities.h”
bool FileUtilities::textFileCopy(char filenamein[],char filenameout[])
{
ifstream-fin(filenamein);
如果(fin.is_open())
{
流fout(文件名输出);
字符c;
while(fin.good())
{
fin.get(c);

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

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

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

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

textFileCopy(false,false)
正在隐式转换为
textFileCopy(NULL,NULL)
,当您尝试打开带有NULL文件名的
ifstream
时,您会看到断言。

textFileCopy(false,false)
正在隐式转换为
textFileCopy(NULL,NULL)
当你试图打开一个带有空文件名的
ifstream
时,你会得到你看到的断言。

你可以发布你得到的错误,这会更容易诊断你的问题。一个明显的问题是你缺少
bool
返回类型。请不要将
使用命名空间
放在标题中,这会降低代码的可重用性。您还有另一个问题。请将其放到另一个帖子中。您可以发布您遇到的错误,从而更容易诊断您的问题。一个明显的问题是您缺少
bool
返回类型。请不要将
using namespace
放在标题中,这会降低代码的可重用性。您必须现在我的程序已经编译好了,我在程序对话框中编译了一个错误,在对话框中得到如下错误:“微软Visual C++调试库调试失败!程序:…PARS.EXE文件f:\DCD\vcToo\CtTyBLD\Selfxx8\CRT\Src\fOpen.C行53表达式:(文件!= null)”然后在VisualStudioCo中打开一个文件“dBGHoo.c”,这样我就把BooL放在函数前面。现在程序编译成对话框,下面的对话框“微软Visual C++调试库断言失败!程序:……PARS.EXE文件f:\DD\VCCODE \CRTYBLD\SELFFX86CRT \ SRC\fOpen.C行53表达式:(文件!= null)”然后它在visual Studio中打开一个文件“dbghook.c”。谢谢。我将其更改为
fileUtil.textFileCopy(argv[1],argv[2]);
并删除了if语句下面的一行。谢谢。我将其更改为
fileUtil.textFileCopy(argv[1],argv[2]);
并删除了if语句下面的一行