如何将 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
#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