Wyciąganie liczb z pliku ( zadanie z kursu C++ )

0

Witam, męczę się już długo z jednym zadaniem z kursu C++ http://cpp0x.pl/kursy/Kurs-C++/Poziom-4/Wczytywanie-zawartosci-pliku-a-kontrola-bledow/485. Program wczytuje mi poszczególne frazy z pliku rozdzielone spacją dopóki nie napotka końca pliku:

while( !plik.eof() )
{
...
...
...
}

W jaki sposób mogę rozdzielić cyfry od znaków we frazie ? Jak jest coś takiego #3 to bez problemu potrafię wyciągnąć tą 3 z tego wyrażenia korzystając z funkcji atoi() ale jak już jest wyrażenie 321b9 to wyciąga mi tylko 321.
Z góry dziękuję :)

0

Jak wiesz, jaka jest struktura danych tekstowych (np. wiesz, że są tam dwie liczby rozdzielone literami), to najlepiej użyć chyba std::stringstream. Jeśli nie wiesz, to sytuacja się komplikuje i tutaj użyłbym już wyrażeń regularnych — ew. rozdzielał ręcznie, jeśli nie chcesz takiej „armaty” wyciągać.

0

Brak detali w pytaniu. Konkrety proszę, jaki format danych i co chcesz z nich wczytać.
Przypuszczam, że chodzi ci o coś takiego:

plik >> std::hex >> x;
0

Wczytuj dane operatorem >>. Wtedy da radę pobierać liczby, a liter nie. Sprwadzaj czy udało się odczytać dane.

2
ostream& FindIntsPrintThemAndThierSum(istream& inputs, ostream& output)
{
    int sum = 0;
    while (inputs.good())
    {
        int x;
        while (inputs >> x)
        {
            output << x << ' ';
            sum += x;
        }
        inputs.clear();
        while (inputs.good() && !isdigit(inputs.peek()))
        {
            inputs.get();
        }
    }
    return output << sum;
}

https://wandbox.org/permlink/xppPav6xg3zRVufQ

disclaimer: kod ma ukrytego buga, którego celowo nie usuwam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1