#include <iostream>
#include <limits>
#include <sstream>
#include <string>

using namespace std;

class Login {
  int id;
  string name;
  string password;
  bool isMale;
public:
  int getID() const { return id; }
  void setID(const int param) { id = param; }
  const string& getName() const { return name; }
  void setName(const string& param) { name = param; }
  const string& getPassword() const { return password; }
  void setPassword(const string& param) { password = param; }
  char getGender() const { return isMale ? 'M' : 'F'; }
  void setGender(const char param) { isMale = param == 'M' || param == 'm'; }

  friend istream& operator>> (istream& lhs, Login& rhs);
};

istream& operator>> (istream& lhs, Login& rhs) {
  char gender;

  lhs >> rhs.id;
  lhs.ignore(numeric_limits<streamsize>::max(), ',');
  getline(lhs, rhs.name, ',');
  getline(lhs, rhs.password, ',');
  lhs >> ws;
  lhs.get(gender);
  rhs.isMale = gender == 'm' || gender == 'M';

  return lhs;
}

int main() {
  istringstream input("1,Liam,1234,M");
  Login foo;

  input >> foo;
  cout << "ID: " << foo.getID() << " Name: " << foo.getName() << " Password: " << foo.getPassword() << " Gender: " << foo.getGender() << endl;
}