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

Biblioteka fstream, operacje na plikach.

Ostatnio zmodyfikowano 2014-05-09 20:35
Autor Wiadomość
Monika90
» 2014-05-09 17:25:30

Takie też działa ale niewiem dlaczego.
C/C++
bool file_exists( const std::string & fname )
{
    return std::ifstream( fname.c_str() );
}
Działa bo masz niezgodną ze standardem implementację biblioteki standardowej.
P-109572
maly
» 2014-05-09 17:40:50
Sprawdziłem to w VC9, MinGW 4.7.1 i Borland Builder 6 i w nich działa, podejrzewam że w innych nowszych kompilatorach także będzie działać.
P-109574
Jacob99
» 2014-05-09 18:28:37
A czemu ma nie działać? Przecież konstruktor strumienia ifstream zwraca wartość logiczną powodzenia operacji otwarcia pliku.
P-109576
Monika90
» 2014-05-09 18:45:01
A czemu ma nie działać?
Ze standardu C++ wynika, że ma nie działać. Nie ma niejawnej konwersji ze std::ifstream do bool, kiedyś była (poprzez void*), ale od 3 lat już nie ma.

Przecież konstruktor strumienia ifstream zwraca wartość logiczną powodzenia operacji otwarcia pliku.
Konstruktory niczego nie zwracają.

P-109578
Jacob99
» 2014-05-09 19:34:29
Konstruktory nie zwracają wartości, to prawda. Chciałem po prostu powiedzieć że ifstream zwróci fałsz, jeśli nie uda się otworzyć pliku. A gdzie w standardzie jest napisane, że taki zapis ma nie działać?
P-109587
Elaine
» 2014-05-09 20:35:30
A gdzie w standardzie jest napisane, że taki zapis ma nie działać?
12.3.2/2, 27.5.3, 27.5.5, 27.7.2 i 27.9.1.6.
P-109596
1 « 2 »
Poprzednia strona Strona 2 z 2