• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Otwarcie pliku w osobnej funkcji c++

Object Storage Arubacloud
–1 głos
240 wizyt
pytanie zadane 11 marca 2017 w Rozwój zawodowy, nauka, praca przez Barteck125 Obywatel (1,120 p.)
edycja 11 marca 2017 przez Barteck125

 

Witam, robie program. Użytkownik podaje nazwe pliku i tak jak w funkcji poniżej plik jest otwierany w jednej funkcji. Teraz tworze sobie drugą funkcje w której będę odczytywał z pliku do tablicy. I tutaj pytanie: Jak mam sie odwołać do tego "plik" zeby odczytać z niego w innej funkcji. Proszę o pomoc. Pozdrawiam.

 


void OtworzPlik(string nazwaPliku) {
	ifstream plik;

	plik.open(nazwaPliku.c_str(), ios::in);            //otwarcie pliku do oczytu
	if (!plik.good()) {
		cout << " Nie znaleziono pliku" << endl;
	}
	else {
		cout << "Znaleziono plik" << endl;

}}

 

1 odpowiedź

+1 głos
odpowiedź 11 marca 2017 przez tangarr Mędrzec (154,860 p.)

Masz kilka podejść. Możesz zwrócić obiekt ifstream(chyba tylko c++11), wskaźnik na taki obiekt, lub przekazać do fukcji referencje (lub wskaźnik) na ten obiekt.
 

ifstream *OtworzPlik(string nazwaPliku) {
    ifstream *plik = new ifstream();
    plik->open(nazwaPliku.c_str(), ios::in);
    if (!plik->good()) {
        cout << " Nie znaleziono pliku" << endl;
        delete plik;
        return NULL;
    }
    else {
        cout << "Znaleziono plik" << endl;
        return plik;
    }
}

bool OtworzPlik(string nazwaPliku, ifstream &plik) { 
    plik.open(nazwaPliku.c_str(), ios::in);
    if (!plik.good()) {
        cout << " Nie znaleziono pliku" << endl;
        return false;
    }
    else {
        cout << "Znaleziono plik" << endl;
        return true;
    }
}

 

komentarz 11 marca 2017 przez Barteck125 Obywatel (1,120 p.)
Twoj pierwszy pomysł ze wskaznikiem bardzo mi się podoba, ale jak teraz użyć tego pliku np w kolejnej funkcji aby odczytać z pliku do np. tablicy ? :)
komentarz 11 marca 2017 przez tangarr Mędrzec (154,860 p.)
bool wczytajDaneZPliku(ifstream *plik) {
    if (plik == NULL)
        return false;
    if (!plik->good())
        return false;
    int liczba;
    *plik >> liczba;
    if (plik->fail())
        return false;
    cout << "wczytano liczbe" << liczba;
    return true;
}

 

komentarz 11 marca 2017 przez Barteck125 Obywatel (1,120 p.)
Dzięki wielkie za pomoc, mimo wszystko nie wiem jak teraz odpalic te funkcje, bo przecież ten plik nie jest czytany.. Pomożesz jeszcze jakoś ?
komentarz 11 marca 2017 przez draghan VIP (106,230 p.)

tangarr, nie odpowiedziałeś mi na moje pytanie pod swoim wczorajszym postem.

Rozrzucanie po programie wskaźników do obiektów na stercie prowadzi do łatwego wycieku zasobów. Obiekty strumieni są uchwytami do zasobów - są stworzone do umieszczania ich na stosie, w zasięgu lokalnym. Pokazujesz złe podejście.

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es60-avoid-new-and-delete-outside-resource-management-functions

komentarz 12 marca 2017 przez tangarr Mędrzec (154,860 p.)
Nie odpowiedziałem, bo pytanie wyglądało na retoryczne.
Całe forum powstało w celach edukacyjnych :)
PS. Ciekawy link. Wart dodania do ulubionych.

Podobne pytania

0 głosów
2 odpowiedzi 317 wizyt
–1 głos
2 odpowiedzi 559 wizyt
pytanie zadane 11 listopada 2016 w C i C++ przez Paweł Celuch Początkujący (420 p.)
0 głosów
3 odpowiedzi 1,185 wizyt
pytanie zadane 24 października 2016 w JavaScript przez Kikaczo Początkujący (280 p.)

92,632 zapytań

141,498 odpowiedzi

319,872 komentarzy

62,011 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...