Witam mam problem z logicznym zrozumieniem pętli while - do tej pory rozumiałem ją tak, że to co stało po while(TUTAJ#1) w nawiasach okrągłych było warunkiem, a to co stało {TUTAJ#2} w nawisach klamrowych wykonywało się dopóki warunek w nawiasach okrągłych był prawdziwy. I tak na przykład fragment kodu:
"int n=5;
while(n<=10) {n++;}" wykona się 5 razy zanim warunek przestanie być prawdziwy i while się zerwie.
Natomiast w programie wykorzystującym funkcję getline(); w nawiasach okrągłych występuje funkcja, która jest prawdziwa dopóki są linie w pliku tekstowym. Natomiast DODATKOWO sam getline(); jest wykonywany, bo w każdej iteracji jest wczytywana na nim kolejna linia MIMO to, że jest on tylko warunkiem i nie znajduje się między nawiasami Klamrowymi. Jak to jest możliwe?
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
using namespace std;
int rok;
string kraj,miasto;
fstream dane;
string roks;
int main()
{
{
dane.open("dane.txt", ios::in);
if(dane.good()==true)
{
cout << "SDane wejscia sprawne";
}
else
{
cout << "Blad danych wejscia";
}
int linia=1;
string ram;
while(getline(dane,ram))
{
switch(linia)
{
case 1:
{
roks = ram;
rok=atoi(roks.c_str());
}
break;
case 2:
{
kraj = ram;
}
break;
case 3:
{
miasto=ram;
}
break;
}
linia++;
}//while
dane.close();
cout << rok << endl;
cout << kraj << endl;
cout << miasto << endl;
return 0;
}
}