Witam.
Próbuję trochę programować w C++ i opieram się głównie na kursach pana Zelenta - kurs "C++" przerobiłem już generalnie cały, a "Object C++" mniej więcej do połowy. Jestem w trakcie tworzenia pewnego kodu, który ogólnie zdaje się poprawnie działać (używam CodeBlocks), ale zastanawia mnie, czy można go napisać lepiej - dokładniej wygląda to tak:
Chcąc ułatwić sobie współpracę mojego programu z plikami tekstowymi, napisałem klasę zawierającą 2 metody - jedna ma zwrócić liczbę wierszy we wczytanym pliku, a druga - treść wiersza o podanym numerze. Stworzyłem coś takiego:
#include <iostream>
#include <fstream>
using namespace std;
class Pliki {
public:
fstream plik;
string name;
int cykl;
Pliki(string n, int c);
int liczba_w(); //liczba wierszy w pliku
string tresc_w(int nr); //treść wiersza o podanym numerze w pliku
};
#include <iostream>
#include <fstream>
#include "pliki.h"
using namespace std;
Pliki::Pliki(string n, int c) {
name=n;
cykl=c;
}
int Pliki::liczba_w() {
plik.open(name.c_str(), ios::in);
int ile=0;
string linia;
while(!plik.eof()) {
getline(plik, linia);
ile++;
}
plik.close();
return ile;
}
string Pliki::tresc_w(int nr) {
plik.open(name.c_str(), ios::in);
int nr_linii=1;
string linia, tresc;
while(getline(plik, linia)) {
if(nr==nr_linii) tresc=linia;
nr_linii++;
}
plik.close();
return tresc;
}
Skupiając się na tych dwóch metodach - czy można rozwiązać te problemy w lepszy sposób? Chodzi mi o to, że może np. nie znam jakichś funkcji w c++, które można by tutaj wykorzystać albo po prostu któreś fragmenty można by zapisać inaczej.