dimanche 13 août 2017

feeding a stringstream to a class member function

I am a newbie trying to learn by doing. I want to feed a stringstream into a class member function called "print()" but I get errors. Once this works, I can proceed to write more class member functions that work with the data I feed them.

For now I have created a class that has a member function 'print'.

class Month
{
public:
string m_month;

void print()
{
cout << m_month << endl;
}

};

Next, I initialized 12 months:

Month month1 = { "January" };
Month month2 = { "February" };
Month month3 = { "March" };
etc.

When I call "month1.print();" it prints January which is correct.

I used stringstream and a for loop to concatenate month + 1 to 12 and I want to feed the stringstream to the print function.

stringstream os; 
string mValue = "month"; 
int iValue = 1; 

for(int i = 0; i < 12; ++i) 
{
    os << mValue << "" << iValue << "\n"; 
    iValue += 1; 
}

However, the stringstream can't be combined with the print function.

os.print(); and os.str().print();

result in "error: ‘std::stringstream {aka class std::__cxx11::basic_stringstream}’ has no member named ‘print’"

Converting the stringstream to char and then feeding it into the print function results in "error: request for member ‘print’ in ‘cstr’, which is of non-class type ‘const char*’"

const string tmp = os.str();
const char* cstr = tmp.c_str();

cstr.print();

Long story short: What I am trying to do is concatenate month + 1 to 12 and feed that to the class member function "print". This seems trivial but I can't get it to work. Any suggestions?

Aucun commentaire:

Enregistrer un commentaire