C++中成员函数的应用

1.编写程序实现将两个文本文件的内容合并?用成员函的方法或者其他。解答吧,我是C++啥也不会看不懂

#include<iostream>
#include<fstream>
#include<cstdlib>
using namespace std;
 
void write_into_file(){
    cout<<"请输入合成后生成的文件名:"<<endl;
    string Des_FileName;
    cin>>Des_FileName;
    cout<<endl;
 
    cout<<"请输入想要合并原始文件个数:"<<endl;
    int cnt;
    cin>>cnt;
    cout<<endl;
 
    string Source_Array_FileName[cnt];//保存将要合并的各文件
    for(int i=0;i!=cnt;++i){
        cout<<"请输入第"<<i+1<<"个原始文件:"<<endl;
        cin>>Source_Array_FileName[i];
        cout<<endl;
    }
    cout<<"请稍后,马上开始合并!"<<endl<<endl;
    ofstream outfile(Des_FileName,ios::out);//定义输出文件流对象,并赋初值,指定模式
    ifstream infile;//定义一个输入文件流对象
    char c;//用来暂存从文件独处的一个字符
 
    for(string Temp_FileName : Source_Array_FileName){
        infile.open(Temp_FileName,ios::in);
        if(!infile){
            cerr<<"打开文件 "<<Temp_FileName<<" 失败"<<endl;
        }
        while(infile.get(c)){
            outfile<<c;
        }
     infile<<endl;
        infile.close();
        cout<<Temp_FileName<<"已经合并到目标文件"<<endl;
    }
    outfile.close();
    cout<<"所有文件合并已完成"<<endl;
}
int main(){
    write_into_file();
    system("pause");
    return 0;
}

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7785421
  • 这篇博客你也可以参考下:为什么C++中的成员函数,不用传参就能访问类中成员?
  • 除此之外, 这篇博客: C++面试题中的 🔥4. 为什么父类析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 将可能会被继承的父类的析构函数设置为虚函数,可以保证当我们new一个子类,然后使用基类指针指向该子类对象,释放基类指针时可以释放掉子类的空间,防止内存泄漏

    C++默认的析构函数不是虚函数是因为虚函数需要额外的虚函数表和虚表指针,占用额外的内存。而对于不会被继承的类来说,其析构函数如果是虚函数,就会浪费内存。因此C++默认的析构函数不是虚函数,而是只有当需要当作父类时,设置为虚函数。

  • 您还可以看一下 夏曹俊老师的C++ 设计模式原理与实战大全-架构师需备课程课程中的 简单工厂实用工程技术:C++对象动态创建技术与配置化开发小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以提供一个基础的解决方案,请参考以下代码和步骤提示:

    步骤1:创建两个文本文件,分别保存需要合并的内容

    假设文件1的路径为"data1.txt",文件2的路径为"data2.txt",它们都保存了纯文本数据。

    步骤2:编写C++成员函数用于合并两个文本文件的内容

    我们可以创建一个类来实现这个功能,其中成员函数可以用于读取两个文件的内容并把它们合并到一个新文件中。

    示例代码如下:

    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    class FileManager
    {
    public:
        //合并两个文本文件的内容到一个新文件中
        void mergeFiles(string file1, string file2, string dest)
        {
            ifstream infile, infile2;
            ofstream outfile;
            string line;
    
            infile.open(file1);
            infile2.open(file2);
            outfile.open(dest, ios::trunc);
    
            while (getline(infile, line))
            {
                outfile << line << endl;
            }
    
            while (getline(infile2, line))
            {
                outfile << line << endl;
            }
    
            infile.close();
            infile2.close();
            outfile.close();
        }
    };
    
    int main()
    {
        FileManager fileMng;
        string file1 = "data1.txt";
        string file2 = "data2.txt";
        string dest = "data_merged.txt";
    
        fileMng.mergeFiles(file1, file2, dest);
    
        cout << "Files merged successfully!\n";
        return 0;
    }
    

    这个类中的mergeFiles成员函数可以接收3个参数:两个要合并的文件的路径和合并后生成的新文件的路径。函数中创建了3个文件流对象(一个 ifstream 和两个 ofstream),分别用于读取两个输入文件的内容和向输出文件中写入数据。使用 while 循环逐行读取文件内容并写入到目标文件中,最后关闭文件流对象。

    步骤3:编译并运行程序

    将上述代码保存为 .cpp 文件并使用 C++ 编译器编译,得到可执行文件后,运行程序即可将两个文件的内容合并到一个新文件中。在代码中,我们使用了一个 FileManager 的实例并调用了它的 mergeFiles 成员函数来实现所需的功能。

    希望这个解决方案能够帮助你。如果你还有任何问题,请随时提出。