Я перегружен оператор >>
, делая объект из потока. Мне было интересно, могу ли я использовать это в конструкторе, который принимает в том же формате, что и поток, но в виде строки. Могу ли я использовать оператор >>
в конструкторе, или мне нужно будет сделать код, чтобы разделить эту строку по-разному?
Например:
Person::Person(std::string line)
{
// this doesn't work
this >> line;
}
std::istream &operator>>(std::istream &is, Person &p)
{
char c1;
std::string forename, surname;
if (is >> forename >> c1 >> surname)
{
if (c1 == ',')
{
p.forename = forename;
p.surname = surname;
}
else
{
is.clear(std::ios_base::failbit);
}
}
return is;
}
Пример ввода: Foo, Bar