Jak wykryć, czy linia jest pusta?Jak wykrywać puste linie podczas czytania z obiektu istream w C++?
mam:
1
2
3
4
5
Czytam to z istream r tak:
int n;
r >> n
Chcę wiedzieć, kiedy sięgam przestrzeń między 4 i 5. Próbowałem czytania jako char i używając .peek() do wykrycia \ n, ale to wykrywa \ n, który idzie za numerem 1. Tłumaczenie powyższego wejścia to: 1 \ n2 \ n3 \ n4 \ n \ n5 \ n jeśli mam rację ...
Ponieważ zamierzam manipulować intami raczej czytam je jako ints niż używając getline, a następnie konwersja na int ...
¤ Odczytaj każdą linię w 'std :: string' za pomocą' std :: getline'. Sprawdź długość łańcucha. Użyj np. a 'std :: istringstream' do odczytywania pojedynczych elementów z linii wejścia. Pomoże to również w błędnym wprowadzeniu danych. Pozdrawiam & hth., –
Och, właśnie widziałem ostatni akapit, który parafrazując mówi: "Nie chcę korzystać z najłatwiejszego i najrozsądniejszego sposobu". W takim przypadku istnieje zjonizm o bardziej złożonych sposobach. Tylko wyobraźnia może ograniczać sposoby robienia czegoś w sposób głupawo-złożony. Pozdrawiam, –
Okej, nie musisz być niegrzeczny. Przynajmniej próbowałem na różne sposoby przed opublikowaniem tego. Chciałem tylko wiedzieć, czy jest inny sposób. Po prostu uczę się C++ atm. Dzięki za komentarz na temat istringstream, zamierzam spróbować zmieszać to z getline! Możesz opublikować jako odpowiedź, jeśli chcesz, a ja to zaakceptuję. – bb2