Ebben a kódrészletben tulajdonképpen mi gondoskodik arról, hogy a while ciklus true értéket kapjon? Hiszen a getline függvénynek nem bool típusú visszatérési értéke van.
while ( getline(fajl,sor) ) { }
Illetve amikor már nem végzi el az adott műveletet (a fájl következő sorának kiolvasását), mivel a fájl végére ért, akkor milyen értéket ad vissza pontosan?
1. Milyen nyelv ez, F#? Merthogy az ilyesmi rohadtul nyelvfüggő. Tegyük fel, hogy C/C++-ról van szó...
2. A C/C++ tele van egy rakat implicit tipuskonverzióval. Ezt az alacsony szintű nyelvek kedvelői szeretik, mert "jajj de kényelmes, és elegáns, hogy mindent egy sorba lehet írni", a magasabb szintű nyelvek kedvelői meg utálják, mert nem mindig egyértelmű, veszélyes, könnyű benézni, elrontani (lásd '=' és '==' felcserélése). Talán a getline a beolvasott karakterek számát adja vissza int-ként, ahol a 0-ból hamis, minden másból igaz lesz.
3. El kéne olvasni a dokumentációt, nem tippelgetni meg kérdezősködni kéne, hogy vajon mit ad vissza ez meg az a függvény.
Akkor tessék, itt a teljes kód:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
string sor;
ifstream fajl ( "feladat.txt" );
if ( fajl.is_open() ) {
while ( getline(fajl,sor) ) {
cout << sor << endl;
}
} else {
cout << "Hiba a fajl megnyitasakor" << endl;
}
return 0;
}
Közben találtam egy egész jó kis dokumentációt, már ha valakit érdekelne esetleg a válasz.
"getline – sor beolvasása az adatfolyamból
public:
istream& getline(char* s, streamsize n);
istream& getline(char* s, streamsize n, char delim);
Beolvas egy sort az adatfolyamból az s C tömbbe, legfeljebb n karaktert, '\n'-t vagy delim karaktert sor végének használva. A függvény akkor áll meg, hogy ha beolvasott n-1 karaktert, ha sorvégjelet, vagy az adott elválasztót elérte (ekkor az elválasztót beolvassa, de nem adja hozzá a szöveghez), Vagy ha fájl végére ért. Bármely esetben lezárja a karakterláncot egy 0-ás byte-tal, és visszatérési értéke az objektum, amelyen hívták."
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!