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

c++ Jak pokazac wszystkie dostepne pliki

Object Storage Arubacloud
0 głosów
334 wizyt
pytanie zadane 6 lipca 2021 w C i C++ przez Eriss69 Gaduła (4,470 p.)
Hejo!

Mój projekt: https://github.com/jaroslawroszyk/-how-many-pages-per-day

1) Mam problem, poniewaz nie wiem jak pokazac dostepne pliki do zapisu :/

2) Co mogę poprawic w tym projekcie
komentarz 6 lipca 2021 przez j23 Mędrzec (194,920 p.)
edycja 6 lipca 2021 przez j23

2) Co mogę poprawic w tym projekcie

To:

void HowManyPages::enterdata()
{
    HowManyPages p;
    ...

    SaveToFile(p, en);
}
void HowManyPages::SaveToFile(HowManyPages &savedate, std::string &tit)
{
    ...
        save << ... << savedate.DateOfReading << ... << savedate.NumberOfPagesRead << '\n';
}

Dlaczego te metody nie działają na obiekcie this, tylko na tymczasowym/lokalnym lub podanym z zewnątrz?

tit powinien być const (jak i metoda SaveToFile).

komentarz 6 lipca 2021 przez Eriss69 Gaduła (4,470 p.)
referencja tam jest
komentarz 6 lipca 2021 przez j23 Mędrzec (194,920 p.)
No i?
komentarz 6 lipca 2021 przez Eriss69 Gaduła (4,470 p.)
ze nie dzialam na kopi obiektu tylko na orginale
komentarz 6 lipca 2021 przez j23 Mędrzec (194,920 p.)

Może źle się wyraziłem. "Tymczasowy" w rozumieniu, że tworzysz obiekt tylko po to, by zapisać jakieś dane w pliku, co jest bez sensu i przeczy idei obiektowości. Obie metody powinny odnosić się do obiektu this (po to one są metodami, a nie zwykłymi funkcjami).

komentarz 6 lipca 2021 przez Eriss69 Gaduła (4,470 p.)

@j23,  tit powinien być const (jak i metoda SaveToFile).

ta metoda jest statyczna

komentarz 6 lipca 2021 przez j23 Mędrzec (194,920 p.)
A po co?
komentarz 6 lipca 2021 przez Eriss69 Gaduła (4,470 p.)
jak uzyc tego this w tym kodzie? w tych metodach
komentarz 6 lipca 2021 przez Eriss69 Gaduła (4,470 p.)
save << "Date: " << this->DateOfReading << ", number of pages: " << this->NumberOfPagesRead << '\n';

 

1
komentarz 6 lipca 2021 przez j23 Mędrzec (194,920 p.)

Nie musisz jawnie używać this, wystarczy tak:

void HowManyPages::enterdata()
{
    std::string en = enterTitle();
    std::cout << "enter the day: ";
    std::cin >> DateOfReading;
    std::cout << "how many pages: ";
    std::cin >> NumberOfPagesRead;
    SaveToFile(en);
}

void HowManyPages::SaveToFile(const std::string &BookTitle) const // wywal static
{
    std::ofstream save(BookTitle.c_str(), std::ios::app);
    save << "Date: " << DateOfReading << ", number of pages: " << NumberOfPagesRead << '\n';
    if(save) std::cout << "Data has been saved !\n";
}

 

komentarz 6 lipca 2021 przez Eriss69 Gaduła (4,470 p.)
poprawione :)
komentarz 6 lipca 2021 przez j23 Mędrzec (194,920 p.)

Dobrze.

Zastanowiłbym się też nad zmianą nazwy klasy, bo HowManyPages to nie jest dobra nazwa według ogólnie przyjętych konwencji. Nazwa klasy powinna być rzeczownikiem.

Co do pierwszego pytania: pliki listujesz tak (w aktualnym katalogu):

for(auto& fn : std::filesystem::directory_iterator("."))
     if(std::filesystem::is_regular_file(fn)) {
         std::cout << fn.path() << '\n';
     }

 

komentarz 6 lipca 2021 przez Eriss69 Gaduła (4,470 p.)
to jaka nazwe moge dac zaproponuj mam pustke w glowie po prostu myhead = nullptr;
komentarz 6 lipca 2021 przez Eriss69 Gaduła (4,470 p.)
co do twojego kodu mam blad w filesysatem moglbys funkcje napisac kotra pokazuje .txt?
komentarz 6 lipca 2021 przez Eriss69 Gaduła (4,470 p.)
@j23
komentarz 6 lipca 2021 przez Eriss69 Gaduła (4,470 p.)

@j23, 

wiem ze on pokazuje co jest w aktualnym katalogu lecz mi chodzi o pliki .txt nie widze nawet tego w cppreference albo jestem slepy

1
komentarz 7 lipca 2021 przez j23 Mędrzec (194,920 p.)

Obawiam się, że to drugie ;)

    namespace fs = std::filesystem;
    
    for(auto& fn : fs::directory_iterator(".")) {
        if(fs::is_regular_file(fn) && fn.path().extension() == ".txt") {
            std::cout << fn.path() << '\n';
        }    
    }

Hint: std::filesystem::path, std::filesystem::directory_entry

to jaka nazwe moge dac zaproponu

Skoro klasa reprezentuje obiekt, który trzyma statystyki przeczytanych stron dla danej książki, to może BookStatistic?

komentarz 7 lipca 2021 przez Eriss69 Gaduła (4,470 p.)
naprawde dziekuje dzieki tobie poznalem troche c++17

1 odpowiedź

+1 głos
odpowiedź 6 lipca 2021 przez dziablo Użytkownik (940 p.)
Hej, co do 1) to rozwin prosze bo nie rozumiem.

2)

Skad pomysl na pliki cpp w katalogu src i headery w katalogu include? To ma byc biblioteka? Pytam, bo taki podzial na katalogi src, lib, include widywalem dotychczas w bibliotekach i ma to sluzyc temu zeby latwo bylo zidentyfikowac gdzie sa pliki dll albo lib ze zbudowanym kodem, gdzie zrodla a gdzie headery. Czy po prostu chcesz miec headery w jednym miejscu? Tak z ciekawosci pytam :)

fajnie, ze dodales jak zbudowac program, w execute to raczej nie 'cd /bin' a 'cd bin' albo 'cd ./bin'

Mozesz tez pokrotce opisac co robi program w README.

Zmienilbym nazwe enuma 'Pages' na cos co bardziej opisuje co to jest, moze ProgramMode?

Co znaczy prefix p_ w nazwach zmiennych?

Mozesz pooznaczac niektore parametry const jak np. savedate w tej metodzie mogloby byc const

HowManyPages::SaveToFile(HowManyPages &savedate, std::string &tit)

Mozesz tez popracowac nad msg commitow, widac, ze sie starasz ale czasami tez jest cos jak commit nr ~60 z message "INITIAL", wiec historia commitow wyglada srednio

Ogolnie spoko konsolowy programik

pozdro
komentarz 6 lipca 2021 przez Eriss69 Gaduła (4,470 p.)
1) spojrz teraz na kod na githubie prosze, chodzilo mi o to ze uzytkwonik po stworzeniu kilku plikow np, cleancode,c++guide itp... bedzie mogl widziec liste tych plików w programiem, wiem ze w c++ 17 jest std::filesystem ale nie wiem jak tego uzyc  :/
komentarz 6 lipca 2021 przez Eriss69 Gaduła (4,470 p.)

Co do katalogów chce miec headery w jednym miejscu i plii cpp w drugim :)

juz poprawilem w README cd /bin -> cd bin

"Mozesz tez pokrotce opisac co robi program w README." 

to juz na koniec projektu :)

"Zmienilbym nazwe enuma 'Pages' na cos co bardziej opisuje co to jest, moze ProgramMode?" 

slusznie dizekuje :)

 

Co znaczy prefix p_ w nazwach zmiennych?

pierwsza litera nazwy enuma, tak o w sumie :/

Mozesz tez popracowac nad msg commitow, widac, ze sie starasz ale czasami tez jest cos jak commit nr ~60 z message "INITIAL", wiec historia commitow wyglada srednio

Posiadasz moze jakas stronke z praktycznymi uwagami/radami co do msg commitow?

Ogolnie spoko konsolowy programik

Dziękuje

1
komentarz 6 lipca 2021 przez j23 Mędrzec (194,920 p.)

@dziablo,

Skad pomysl na pliki cpp w katalogu src i headery w katalogu include?

Przecież to dość powszechny podział plików w projektach C/C++ (bez znaczenia czy to aplikacja, czy biblioteka).

1
komentarz 6 lipca 2021 przez dziablo Użytkownik (940 p.)

Posiadasz moze jakas stronke z praktycznymi uwagami/radami co do msg commitow?

Nie znam zadnych materialow, ale generalnie moim zdaniem idealne commit history to takie, ktore mozesz czytac i mniej wiecej wiesz co sie dzieje w projekcie.

Na przykladzie Twoich ost commitow co moznaby poprawic:

Rename enum class -> mozna dodac co z czego zmieniles 'Rename enum Pages to ProgramMode'

Adding static void function, which writes data to a file,  -> tu wydaje mi sie najbardziej informacji jakiej brakuje to jakie dane sa zapisywane do pliku, informacje o typie mozna pominac.

Generalnie starac sie dodac jak najwiecej istotnego info, bez rozpisywania sie, ale jesli robisz jakas kontrowersyjna zmiane warto sie rozpisac i dokladnie napisac w commicie dlaczego te zmiane robisz.

I roznie ludzie pisza commity zmienienie nazwy pliku moze byc:
Renamed file x to y

Rename file x to y

Renaming file x to y

Wazne zebys wybral w jakiej formie chcesz pisac msg i sie tej jednej formy trzymal, bo widzialem w historii, ze troche to sie mieszalo.

komentarz 8 lipca 2021 przez Eriss69 Gaduła (4,470 p.)
bede sie starac

Podobne pytania

–1 głos
0 odpowiedzi 720 wizyt
0 głosów
1 odpowiedź 889 wizyt
pytanie zadane 6 czerwca 2015 w Python przez Kaspero Obywatel (1,920 p.)

92,568 zapytań

141,424 odpowiedzi

319,629 komentarzy

61,956 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!

...