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

Poziom 4 Rozdział 32

Ostatnio zmodyfikowano 2017-03-05 17:40
Autor Wiadomość
ronaldo71888
Temat założony przez niniejszego użytkownika
Poziom 4 Rozdział 32
» 2017-03-04 20:46:45
Czy mógłby ktoś wytłumaczyć ten kod?
*Nie rozumiem dlaczego w plik.open jest "sNazwaPliku.c_str()"  a nie lokalizacja pliku na dysku. Nie powinno być tak jak autor tłumaczył zastosowanie plik.open wcześniej tj. "plik.open( "C:\\odczyt.txt" ); "
* mógłby ktoś lepiej wytłumaczyć wczytywanie pliku, bo z tego kodu nie bardzo widzę co z czego się bierze i jak mam to zrobić ;/
* Dlaczego autor użył "!". Czy jest to potrzebne? 


#include <iostream>
#include <fstream>
#include <string>

bool wyswietlZawartoscPliku( std::string sNazwaPliku )
{
    std::ifstream plik;
    plik.open( sNazwaPliku.c_str() );
    if( !plik.good() )
         return false;
   
    std::string wiersz;
    while( std::getline( plik, wiersz ) )
         std::cout << wiersz << std::endl;
   
    plik.close();
    return true;
}

int main()
{
    if( !wyswietlZawartoscPliku( "cpp0x.txt" ) )
         std::cout << "Nie udalo sie otworzyc pliku o podanej nazwie." << std::endl;
   
    return 0;
}

Bardzo proszę o pomoc, bo stoję w miejscu. ;/
P-158525
maly7
» 2017-03-04 22:48:19
Jest tak jak mówisz, w plik.open jest lokalizacja pliku na dysku, po prostu jest ona zapisana w zmiennej typu string o nazwie sNazwaPliku, która jest przekazywana do funkcji jako jej argument.

Takie coś:
C/C++
string sNazwaPliku = "plik.txt";
plik.open( sNazwaPliku.c_str() );
Otwiera ten sam plik (tak samo) jak:
plik.open( "plik.txt" );


Dlaczego autor użył '!':
! jest to negacja. Jeśli plik.good() zwraca wartość niezerową (true, 1, itp.) oznacza to, że plik został prawidłowo otworzony.
Więc jeśli zanegować stwierdzenie (plik został otworzony) wychodzi (plik nie został otworzony), można przyjąć:
C/C++
!( Plik zostal otworzony ) ==( Plik nie zostal   otworzony )
!1 == 0
!0 == 1
!true == false

Więc warunek służy do tego, że jeśli pliku nie udało się otworzyć nie kontynuuje (nie wykonuje dalszych poleceń w funkcji) tylko z niej wychodzi zwracając false (return false).

Tak samo w mainie, jeśli funkcja wyswietlZawartoscPliku zwraca 0 (!1), oznacza to, że plik nie został otworzony czyli wyświetla komunikat, że nie udało się otworzyć pliku.
P-158527
ronaldo71888
Temat założony przez niniejszego użytkownika
» 2017-03-05 12:46:37
Jak mam zapisać ten plik o którym mowa? " Żeby Ci ułatwić naukę, utworzyłem krótki plik tekstowy, który możesz teraz pobrać i zapisać w stosownym katalogu na dysku (plik: cpp0x.txt). "  adres do tego pliku : http://cpp0x.pl/!files/!manual/Kurs-C++/cpp0x.txt

mam otworzyć notatnik wkleić treść z tej strony i zapisać na dysku np. D jako "cpp0x.txt", a jak nie to jak to pobrać?
P-158585
maly7
» 2017-03-05 17:40:42
No to jest zwykły plik tekstowy...
Możesz skopiować do notatnika i zapisać, możesz po otworzeniu zapisać poprzez Ctrl+S (Plik→Zapisz).

Wracając do poprzednich pytań, skoro nie wiesz co to jest argument funkcji/zmienna i negacja to myślę, że nie powinieneś robić tak dalekich lekcji. Wróć do poprzednich i poczytaj o tym, poćwicz i dopiero jak opanujesz to wtedy możesz iść dalej.
P-158595
« 1 »
  Strona 1 z 1