Wyszukiwanie floatow z dowolnego pliku txt

0

Witam, mam pytanie w jaki sposob, moge z dowolnego pliku .txt znalezc float i zapisac do tablicy float.
Tekst w pliku moze wygladac: ed23.04kl;;23,0s

Tylko . jest traktowana jako liczba float, , ; spacje i litery sa odrzucane.

Mam dokladnie z pliku odczytac wszystkie liczby (calkowite zamienic na float) i posortowac je.

0

Gdyby w pliku byly same liczby calkowite to wiedzialbym jak to zrobic, jednak nie wiem jak to zrobic w przypadku liczb rzeczywistych. To znaczy nie wiem jak je wyciagnac z pliku. Prosze o jakis kawalek kodu.

0
std::ifstream file;
float tmp;
// jakiś zbiór na wczytane liczby
while(true) {
    if(file >> tmp) {
        // udało się wczytać i dodajemy do zbioru liczb
    {
    if(!file && !file.eof()) {
        // nie udało się wczytać czyli nie liczba
        // pozbywamy się danych póki nie pojawi sie cyfra
    }
    if(file.eof()) {
        // koniec pliku, wychodzimy
    }
}

Sposobów jest wiele, a to jeden z prostych schematów.
Resztę doczytaj z linków.

0
bool CanStartFloat(int ch)
{
    return isdigit(ch) || ch == '-';
}

auto ReadAllFloats(std::istream &inputs) -> std::vector<double>
{
    std::vector<double> result;
    while (!inputs.eof() && !inputs.bad())
    {
        double x;
        while (inputs >> x)
        {
            result.push_back(x);
        }
        inputs.clear();
        while(inputs.good() && !CanStartFloat(inputs.peek()))
        {
            inputs.get();
        }
    }
    return result;
}

https://wandbox.org/permlink/4yWcnyQjlHFe2g6b

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