Robię niewielką migrację z C++ Visual 2006 do C++ Visual 2010 i miałem kawałek kodu taki jak: CFile *fInp; ... iStatus = fInp->Read(chMsg, iMaxBuffer); // to coś zwraca inta ile znaków zostało skopiowanych
po migracji zrobiłem: ifstream *fInp; ... fInp->read(chMsg, iMaxBuffer); // to coś zwraca basic_istream
@Analityk: a ja zrobilem: void foo(ifstream *fInp) i uzywam w funkcji wskaznika do obiektu. nie tworze nowego obiektu w funkcji. No chyba, ze zle.pisze :p
@Analityk: @Wypok_spoko: Referencja a wskaźnik w jego przypadku (argument funkcji) nie będzie się niczym różnić. Modulo assercja by sprawdzić czy wskaźnik nie wskazuje na nullptr.
Referencja oczywiście może być czytelniejsza, ale w wygenerowanym kodzie programu wyjdzie na to samo.
CFile *fInp;
...
iStatus = fInp->Read(chMsg, iMaxBuffer); // to coś zwraca inta ile znaków zostało skopiowanych
po migracji zrobiłem:
ifstream *fInp;
...
fInp->read(chMsg, iMaxBuffer); // to coś zwraca basic_istream
Jak wziąć ilość znaków skopiowanych teraz?
#programowanie #naukaprogramowania #cpp
flnp->gcount()
http://www.cplusplus.com/reference/istream/istream/gcount/
fIn->read(szMsg, iMaxBuffer);
iStatus = fIn->gcount();
czyli tak?
ifstreama?ifstream plik;
ifstream* wskaznikDoPlik = &plik
void foo(ifstream *fInp) i uzywam w funkcji wskaznika do obiektu. nie tworze nowego obiektu w funkcji.
No chyba, ze zle.pisze :p
@Wypok_spoko: wydaje mi się, że nie masz żadnego obiektu tylko wskaźnik...
@Wypok_spoko: tutaj tworzysz wskaźnik ale nie ma przy nim new ani innego konstruktora, więc chyba to nie jest poprawne
nullptr.Referencja oczywiście może być czytelniejsza, ale w wygenerowanym kodzie programu wyjdzie na to samo.
@wszystkiefajnenickisazajete: Napisał że jest to parametr funkcji, dlatego to tak wygląda.