AlwaysLearningNewStuff AlwaysLearningNewStuff - 3 months ago 16
C++ Question

Different output format for cin/ofstream

INTRODUCTION AND RELEVANT INFORMATION:



Suppose I have the following class:

class Example
{
int m_a;
int m_b;
public:
// usual stuff, omitted for brevity
friend ostream & operator<< (ostream & os, const Example &e)
{
return os << m_a << m_b;
}
};


QUESTION:



I want to keep default behavior for
cin
, but the following format when writing to
ofstream
:

m_a , m_b


MY EFFORTS TO SOLVE THIS:



I have tried searching here, but haven't found any similar question.

I have tried searching online, but still haven't found anything helpful.

I have tried to add

friend ofstream & operator<< (ofstream & ofs, const Example &e)
{
return ofs << m_a << ',' << m_b;
}


into the class, but that produced a compiler error. To be honest, this approach feels wrong, but i had to try it before coming here for help.

Answer

When chaining operators, all the standard << will return an ostream& reference.

Then your return ... will not work, because the value doesn't match the ofstream& return type.

Just use ostream& in your user defined operator<<, and it should work.

Comments