Przerywanie strumienia wejścia, po braku otrzymania danych...
Ostatnio zmodyfikowano 2017-02-23 10:20
cichy3993 Temat założony przez niniejszego użytkownika |
Przerywanie strumienia wejścia, po braku otrzymania danych... » 2017-02-22 20:38:52 Jak w temacie, chcę aby "cin" był przerywany po niewprowadzeniu danych, tj. Podawane są jakieś liczby: 1 5 6456 *tu nic nie jest wprowadzane, użytkownik klika enter* //w tym momencie przerywane jest wprowadzanie danych, a program wykonuje jakieś operacje na tych wprowadzonych dotychczas |
|
jankowalski25 |
» 2017-02-22 21:26:22 1. Wczytaj tekst za pomocą std::getline() . Biblioteka <string>Wczytywanie wiersza znaków2. Sprawdź, czy tekst jest pusty. 3. Utwórz obiekt typu std::istringstream przekazując do konstruktora wczytany tekst. 4. Użyj tego obiektu tak, jak std::cin do wczytania liczby. |
|
pekfos |
» 2017-02-23 10:20:55 Wczytywanie zawartości pliku, a kontrola błędówFunkcja czyNapotkanoZnakNowegoWiersza(). To jest na przykładzie strumieni plikowych, ale to działa identycznie dla std::cin. Nie ma tu niczego specyficznego dla std::ifstream, czy plików, więc usuń f z nazwy i będziesz mógł przekazać do funkcji std::cin. Pamiętaj, że szukasz dwóch przejść do nowej linii pod rząd, z pominięciem innych białych znaków. Jedno przechodzi do nowej linii, drugie kończy pustą linię, którą chcesz oznaczyć koniec danych. *tu nic nie jest wprowadzane, użytkownik klika enter* |
Miało być przerywanie po braku otrzymania danych, a ty przekazujesz enter ;) Strumień działa na znakach, nie liczbach, więc to jest przekazywanie danych. Wersja bez przekazywania danych, to ręczne oznaczenie końca danych za pomocą Ctrl+Z (w konsoli, pod Windowsem). Wtedy odczyt liczby za końcem spowoduje błąd i możesz tego użyć do przerwania pętli. Gdyby dane w std::cin brały się nie z konsoli, a z pliku, koniec zostałby automatycznie oznaczony wraz z wyczerpaniem danych z pliku. Jeśli projektujesz narzędzie do wykorzystywania w ten sposób, to może być właściwsza droga. |
|
« 1 » |