如何将 void print 函数(在 类 内)打印到文本文件

How to get void print functions (that are within classes) printed to a text file

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

using namespace std;

class Person                     //class Person
{
    public:                             //declare variables in the Person class
        string lastName, firstName, address, city, state, zip, phone;
        Person();

        void printPerson()                              //function used to print out the content inside this class
        {
            cout << firstName << " ";
            cout << lastName << endl;
            cout << address << ", ";
            cout << city << ", ";
            cout << state << " ";
            cout << zip << endl;
            cout << "Phone Number: " << phone << endl;
        }

};

class Customer : public Person {                    //declare class Customer; Customer is a derived class of Person
    public:
        int customerNumber;                       //declare variables 
        bool mailingList;
        string comments;
        Customer();

        void printCustomer()                     //function used to print the content in the Customer class as well as the Person class
        {

            printPerson();         

            cout << "Customer Number: " << customerNumber << endl;

            if (mailingList == true)
            {
                cout << "Mailing List: True" << endl;
            }
            if (mailingList == false)
            {
                cout << "Mailing List: False" << endl;
            }

            cout << "Comments: " << comments << endl;
        }
};

int main()
{
    ofstream outfile;
    outfile.open("testOutput.txt", ios::out);

    PreferredCustomer Igottaquestion;                                 //create an instance for PreferredCustomer
    Igottaquestion.lastName = "Igottaquestion";
    Igottaquestion.firstName = "Ed";
    Igottaquestion.address = "4901 Evergreen";
    Igottaquestion.city = "Dearborn";
    Igottaquestion.state = "MI";
    Igottaquestion.zip = "48126";
    Igottaquestion.phone = "313-436-9145";
    Igottaquestion.customerNumber = 1;    
    Igottaquestion.mailingList = true;
    Igottaquestion.comments = "class quentioner";
    Igottaquestion.printPreferredCustomer();


    Customer Kool;                                   //create an instance for Customer
    Kool.lastName = "Kool";
    Kool.firstName = "James";
    Kool.address = "1313 Colin Blvd";
    Kool.city = "Dearborn Heights";
    Kool.state = "MI";
    Kool.zip = "48127";
    Kool.phone = "313-836-9168";
    Kool.customerNumber = 3;
    Kool.mailingList = false;
    Kool.comments = "Class Answerer";
    Kool.printCustomer();

    cout << endl;


    system("pause");
    return 0;
}

我的问题是,不仅要到屏幕,我还需要print/output将结果到文本文件。

通常情况下,我可以这样做:

ofstream 输出文件;

outfile.open("testOutput.txt", ios::out);

outfile << firstName << " ";

但是,在这种情况下,如何将 void print 函数(嵌入 类)打印到文本文件中?

您应该为 class 重载 << 运算符, 这个 link 会帮助你 https://docs.microsoft.com/en-us/cpp/standard-library/overloading-the-output-operator-for-your-own-classes?view=vs-2019

很简单,只需将您希望输出的位置作为参数传递给您的函数即可。像这样

   void printPerson(std::ostream& out) // out is the destination we are writing to
    {
        out << firstName << " ";
        out << lastName << endl;
        out << address << ", ";
        out << city << ", ";
        out << state << " ";
        out << zip << endl;
        out << "Phone Number: " << phone << endl;
    }

printCustomer 等的相同更改

那你就用这样的函数

  ofstream outfile;
  outfile.open("testOutput.txt", ios::out);

  Customer Kool;
  ...
  Kool.printCustomer(outFile); // write the customer to outfile
  outFile << endl;

  Person Aplus;
  ...
  Aplus.printPerson(outFile); // write the person to outfile