I am trying to write the following entire function to a text file while still maintaining its console output functionality without having code redundancy. Is there a simple way to post an entire method's result to a file and console at the same time?
#include<iostream>
#include<fstream>
void sports(){
cout<<"\nGame_Code\t\tGane\t\tCost\t\tStart Time\n";
cout<<"\nSP-9651\t\t Game 1 \t\t60\t\t08:00";
cout<<"\nSP-9652\t\t Game 2 \t\t60\t\t09:15";
cout<<"\nSP-9653\t\t Game 3 \t\t55\t\t09:55";
cout<<"\nSP-9654\t\t Game 4 \t\t55\t\t11:00";
cout<<"\nSP-9655\t\t Game 5 \t\t50\t\t13:00";
cout<<"\nSP-9657\t\t Game 7 \t\t45\t\t19:45";
cout<<"\nSP-9659\t\t Game 8 \t\t70\t\t22:45";
cout<<"\n\n";
}
int main(){
//This is for console output
sports();
}
Streams can be passed to functions. So have a print function that does both outputs.
void print(std::ostream &os1, std::ostream &os2, const std::string &str)
{
os1 << str;
o22 << str;
}
void sports()
{
std::fstream file("filename");
print(std::cout, file, "\nSP-9651\t\t Game 1 \t\t60\t\t08:00");
print(std::cout, file, "\nSP-9652\t\t Game 2 \t\t60\t\t09:00");
print(std::cout, file, "\nSP-9653\t\t Game 3 \t\t60\t\t10:00");
//... etc
}
int main()
{
sports();
return 0;
}
Yes, you can return std::string
from the function and save it to a variable.
Then you can use that variable to print it on the console or/and on a file.
std::string sports(){
std::stringstream ss;
ss<<"\nGame_Code\t\tGane\t\tCost\t\tStart Time\n";
// ...
return ss.str();
}
The function should have only one purpose. In your case, that purpose is to create the string.Single responsibility principle.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With