Pomoc przy wykonywaniu kursu c++. Problem ze wczytaniem do funkcji zmiennej "fstream"

0

Treść zadania:
2. [trudne zadanie] Napisz program, który dla każdego wiersza w pliku:
wczyta liczby i wypisze ich sumę w przypadku, gdy wszystkie liczby uda się wczytać;
wypisze komunikat o błędnych danych, jeżeli wystąpi błąd podczas wczytywania liczb (komunikat ma wyświetlać numer wiersza, w którym wystąpił błąd).
Dane w dokument.txt :
1 2 3
3 4 a 5
3 2
5 2 2 1 3

3 4

Nie wiem dlaczego ale funkcja nie chce mi wczytać "pliku"
o to kod:

#include <iostream>
#include <fstream>
#include<cstdlib>
using namespace std;

bool czyNapotkanoZnakNowegoWiersza(ifstream & plik )
{
    char cZnak;
    for(;; ) //nieskończona pętla
    {
        plik.clear();
        cZnak = plik.peek(); //sprawdzamy jaki kolejny znak zostanie zwrócony przez operację odczytu
        if( plik.fail() )
             return false; //wystąpił błąd odczytu danych

        if( !isspace( cZnak ) )
             return false; //pobrany znak nie jest białym znakiem

        plik.get( cZnak ); //odczytujemy biały znak z pliku
        if( plik.fail() )
             return false; //wystąpił błąd odczytu danych

        if( cZnak == '\n' )
             return true;

    } //for
}
int main()
{

    fstream plik;
    plik.open("Dokument.txt");
    if(!plik.good())
        {
    cout << "Nie udalo mi sie otworzyc pliku!" << endl;
    exit(0);
    }


    while(czyNapotkanoZnakNowegoWiersza(plik)==false){ //Błąd występuje tutaj

    }

    return 0;
}

``````cpp

w skrócie wychodzi mi taki komunikat: "error: niepoprawna inicjalizacja odwołani"

1

https://wandbox.org/permlink/2Ld1QfVcGbAcZxyG

#include <iostream>
#include <sstream>
#include <fstream>
#include <iomanip>

int main()
{
    std::ifstream f { "Dokument.txt" };
    if (!f.good()) {
        std::cerr << "Failed to open file!\n";
    }
    std::string line;
    while (std::getline(f, line)) {
        std::istringstream lineStream { line };
        
        int x;
        int sum = 0;
        while (lineStream >> x) sum += x;
        lineStream >> std::ws;
        if (lineStream.eof()) {
            std::cout << sum << '\n';
        } else {
            std::cout << "Err.\n";
        }
    }
}
0

Bardzo dziękuje za pomoc i rozwiązanie zadania i jednocześnie przepraszam że nie dodałem punktu że przy wykonywaniu tego zadania muszę użyć funkcji "czyNapotkanoZnakNowegoWiersza" i nie mogę jej zmienić w jakikolwiek sposób tak jest zapisane w treści zadania. Jeszcze raz przepraszam za wprowadzenie w błąd

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