Chciałbym napisać operator >> dla mojej klasy a w internecie nie mogę znaleźć nic konkretnego na jego temat.
Jego działanie ma polegać na tym, że kiedy wpiszę ileś tam floatów porozdzielanych przecinkami lub spacjami, to załaduje je do obiektu mojej klasy i wyświetli informację o błędzie oraz zostanie wywołany po raz kolejny, jeśli poda się mu coś innego niż float (np. literę czy jakiś znak).
Jak to zrobić?
[C++]Przeładowanie operatora >>.
-
- Użytkownik
- Posty: 6607
- Rejestracja: 16 sty 2007, o 19:42
- Płeć: Mężczyzna
- Podziękował: 119 razy
- Pomógł: 1823 razy
[C++]Przeładowanie operatora >>.
Operator>> ma proste zadanie - ma pobrać dane ze strumienia wejściowego i przetworzyć je jakoś dla swojego użytku. Wywołanie siebie samego spowoduje nieskończoną pętlę.
Ogólnie nie wiem w czym masz problem. Masz zdefiniowane jak to ma działać, co ma wczytywać, więc wystarczy teraz o tylko napisać...
Pozdrawiam.
Ogólnie nie wiem w czym masz problem. Masz zdefiniowane jak to ma działać, co ma wczytywać, więc wystarczy teraz o tylko napisać...
Pozdrawiam.
-
- Użytkownik
- Posty: 953
- Rejestracja: 27 wrz 2005, o 22:56
- Płeć: Mężczyzna
- Lokalizacja: Wrocław
- Podziękował: 11 razy
- Pomógł: 74 razy
[C++]Przeładowanie operatora >>.
operatory ze strumieniami normalnie definiujesz:
Kod: Zaznacz cały
istream& operator >> (istream &s, TClassA &a)
{
float f;
s >> f; // czytasz float lub coś tam.
a.set(f); // robisz coś z tym...
return s; // zwracasz strumień (żeby można było składać s >> f >> x >> t ...)
}
możesz czytać cały plik w pętli:
istream& operator >> (istream &s, TClassA &a)
{
while( !s.eof() )
{
float f;
s >> f;
a.set(f);
char c; s.getc(c); // jakoś tak pomijamy przecinki...
}
return s;
}