#include <iostream>
#include <sstream>
enum class dna_strand : char {
positive = '+',
negative = '-'
};
std::ostream& operator <<(std::ostream& out, dna_strand strand) {
return out << static_cast<char>(strand);
}
std::istream& operator >>(std::istream& in, dna_strand& strand) {
char ch{};
if (not in >> ch)
return in;
if (ch == '+')
strand = dna_strand::positive;
else if (ch == '-')
strand = dna_strand::negative;
else
in.setstate(std::ios::failbit);
return in;
}
int main() {
std::stringstream sstr("+");
dna_strand s{};
sstr >> s;
std::cout << "\"" << s << "\"\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3N0cmVhbT4KCmVudW0gY2xhc3MgZG5hX3N0cmFuZCA6IGNoYXIgewogICAgcG9zaXRpdmUgPSAnKycsCiAgICBuZWdhdGl2ZSA9ICctJwp9OwoKc3RkOjpvc3RyZWFtJiBvcGVyYXRvciA8PChzdGQ6Om9zdHJlYW0mIG91dCwgZG5hX3N0cmFuZCBzdHJhbmQpIHsKICAgIHJldHVybiBvdXQgPDwgc3RhdGljX2Nhc3Q8Y2hhcj4oc3RyYW5kKTsKfQoKc3RkOjppc3RyZWFtJiBvcGVyYXRvciA+PihzdGQ6OmlzdHJlYW0mIGluLCBkbmFfc3RyYW5kJiBzdHJhbmQpIHsKICAgIGNoYXIgY2h7fTsKICAgIGlmIChub3QgaW4gPj4gY2gpCiAgICAgICAgcmV0dXJuIGluOwogICAgaWYgKGNoID09ICcrJykKICAgICAgICBzdHJhbmQgPSBkbmFfc3RyYW5kOjpwb3NpdGl2ZTsKICAgIGVsc2UgaWYgKGNoID09ICctJykKICAgICAgICBzdHJhbmQgPSBkbmFfc3RyYW5kOjpuZWdhdGl2ZTsKICAgIGVsc2UKICAgICAgICBpbi5zZXRzdGF0ZShzdGQ6Omlvczo6ZmFpbGJpdCk7CiAgICByZXR1cm4gaW47Cn0KCmludCBtYWluKCkgewogICAgc3RkOjpzdHJpbmdzdHJlYW0gc3N0cigiKyIpOwogICAgZG5hX3N0cmFuZCBze307CiAgICBzc3RyID4+IHM7CiAgICBzdGQ6OmNvdXQgPDwgIlwiIiA8PCBzIDw8ICJcIlxuIjsKfQ==