#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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGltaXRzPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBMb2dpbiB7CiAgaW50IGlkOwogIHN0cmluZyBuYW1lOwogIHN0cmluZyBwYXNzd29yZDsKICBib29sIGlzTWFsZTsKcHVibGljOgogIGludCBnZXRJRCgpIGNvbnN0IHsgcmV0dXJuIGlkOyB9CiAgdm9pZCBzZXRJRChjb25zdCBpbnQgcGFyYW0pIHsgaWQgPSBwYXJhbTsgfQogIGNvbnN0IHN0cmluZyYgZ2V0TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG5hbWU7IH0KICB2b2lkIHNldE5hbWUoY29uc3Qgc3RyaW5nJiBwYXJhbSkgeyBuYW1lID0gcGFyYW07IH0KICBjb25zdCBzdHJpbmcmIGdldFBhc3N3b3JkKCkgY29uc3QgeyByZXR1cm4gcGFzc3dvcmQ7IH0KICB2b2lkIHNldFBhc3N3b3JkKGNvbnN0IHN0cmluZyYgcGFyYW0pIHsgcGFzc3dvcmQgPSBwYXJhbTsgfQogIGNoYXIgZ2V0R2VuZGVyKCkgY29uc3QgeyByZXR1cm4gaXNNYWxlID8gJ00nIDogJ0YnOyB9CiAgdm9pZCBzZXRHZW5kZXIoY29uc3QgY2hhciBwYXJhbSkgeyBpc01hbGUgPSBwYXJhbSA9PSAnTScgfHwgcGFyYW0gPT0gJ20nOyB9CgogIGZyaWVuZCBpc3RyZWFtJiBvcGVyYXRvcj4+IChpc3RyZWFtJiBsaHMsIExvZ2luJiByaHMpOwp9OwoKaXN0cmVhbSYgb3BlcmF0b3I+PiAoaXN0cmVhbSYgbGhzLCBMb2dpbiYgcmhzKSB7CiAgY2hhciBnZW5kZXI7CgogIGxocyA+PiByaHMuaWQ7CiAgbGhzLmlnbm9yZShudW1lcmljX2xpbWl0czxzdHJlYW1zaXplPjo6bWF4KCksICcsJyk7CiAgZ2V0bGluZShsaHMsIHJocy5uYW1lLCAnLCcpOwogIGdldGxpbmUobGhzLCByaHMucGFzc3dvcmQsICcsJyk7CiAgbGhzID4+IHdzOwogIGxocy5nZXQoZ2VuZGVyKTsKICByaHMuaXNNYWxlID0gZ2VuZGVyID09ICdtJyB8fCBnZW5kZXIgPT0gJ00nOwoKICByZXR1cm4gbGhzOwp9CgppbnQgbWFpbigpIHsKICBpc3RyaW5nc3RyZWFtIGlucHV0KCIxLExpYW0sMTIzNCxNIik7CiAgTG9naW4gZm9vOwoKICBpbnB1dCA+PiBmb287CiAgY291dCA8PCAiSUQ6ICIgPDwgZm9vLmdldElEKCkgPDwgIiBOYW1lOiAiIDw8IGZvby5nZXROYW1lKCkgPDwgIiBQYXNzd29yZDogIiA8PCBmb28uZ2V0UGFzc3dvcmQoKSA8PCAiIEdlbmRlcjogIiA8PCBmb28uZ2V0R2VuZGVyKCkgPDwgZW5kbDsKfQ==