Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wczytywanie liczb do wektora zakończone znakiem '|'

Ostatnio zmodyfikowano 2015-08-04 15:25
Autor Wiadomość
darek_145
Temat założony przez niniejszego użytkownika
Wczytywanie liczb do wektora zakończone znakiem '|'
» 2015-08-03 15:47:39
Witam,
Próbuje napisać program dzięki któremu będę wczytywał do wektora liczby aż do momentu, w którym wpisze znak '|'.
Niestety nie bardzo wiem jak się za to zabrać.
Jeżeli użyje pętli
while( cin >> number ) { }
 zakładając, że number jest typu int to program zatrzyma się w momencie wpisania czegokolwiek innego od liczby całkowitej.
Jak inaczej mógłbym rozwiązać ten problem?

Z góry dzięki!
P-135642
carlosmay
» 2015-08-03 15:59:38
Przecież to działa. Czemu szukasz dalej?
P-135643
darek_145
Temat założony przez niniejszego użytkownika
» 2015-08-03 16:05:26
No właśnie nie działa, przynajmniej nie tak jak powinno.
Wczytywanie powinno zakończyć się tylko i wyłącznie przy otrzymaniu na wejściu znaku '|'.
Poza tym w momencie wpisania czegoś innego niż typ całkowity program kończy działanie ignorując kolejne instrukcje cin.
P-135644
Monika90
» 2015-08-03 16:38:05

char ch;
while (file >> ch && ch != '|')
    if (std::isdigit(static_cast<unsigned char>(ch)))
    {
         file.unget();
         int x;
         file >> x;
         vec.push_back(x);
    }


EDIT: z tym że to nie poradzi sobie z liczbami ujemnymi, ale nie trudno to poprawić
P-135645
michal11
» 2015-08-03 16:38:20
Wczytuj jako string i sprawdzaj co wczytało.
P-135646
darek_145
Temat założony przez niniejszego użytkownika
» 2015-08-03 19:21:51
Dzięki Monika90, o to mi właśnie chodziło. Jeszcze tylko spróbuje rozszerzyć to o liczby ujemne.
A co do Twojego pomysły michał11 to jest o tyle nieodpowiedni, że ja chce mieć vector intów, a jak sobie powczytuje stringi to ich nie przekonwertuje na int.
P-135652
michal11
» 2015-08-03 19:32:38
to ich nie przekonwertuje na int
A niby dlaczego nie ?

Zresztą to co napisała Monika to, co do zasady, praktycznie to samo co napisałem ja.
P-135653
JMII89
» 2015-08-03 20:10:51
A do czego jest atoi(string.c_str());?
Żeby przekonwertować string na int.
P-135656
« 1 » 2
  Strona 1 z 2 Następna strona