W jaki sposób można odczytać całą linijkę z pliku za pomocą getline? Zamiescilem kod z zadania ponizej. Chce, żeby mozna bylo odczytac z pliku nazwy oddzielone spacją, a nie jeden wyraz.
#include <iostream>
#include <string>
#include <windows.h>
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream infile;
struct pole
{
string nazwisko;
double kwota = 0;
};
int main()
{
cout << endl;
cout << " Podaj nazwe pliku z danymi: ";
char filename[50];
cin.getline(filename, 50);
infile.open(filename);
if (!infile.is_open())
{
cout << " Otwarcie pliku nie powiodlo sie. " << endl;
cout << " Program zostanie zakonczony. " << endl << endl;
exit(EXIT_FAILURE);
}
int i = 0;
cout << endl;
cout << " Podaj liczbe wplacajacych: ";
int ilosc;
infile >> ilosc;
system("cls");
pole* pd = new pole[ilosc];
while (i < ilosc)
{
cout << endl;
cout << " Podaj nazwisko: ";
getline(infile, pd[i].nazwisko);
cout << " Podaj kwote: ";
infile >> pd[i].kwota;
i++;
system("cls");
}
system("cls");
string* wspanialysponsor = new string[ilosc];
string* sponsor = new string[ilosc];
int sprawdz = 0;
int sprawdz1 = 0;
int j = 0, k = 0;
i = 0;
while (i < ilosc)
{
if (pd[i].kwota >= 10000)
{
wspanialysponsor[j] = pd[i].nazwisko;
j++;
sprawdz = 1;
i++;
}
else if (pd[i].kwota < 10000)
{
sponsor[k] = pd[i].nazwisko;
k++;
sprawdz1 = 1;
i++;
}
}
int z = 0;
cout << " Nasi wspaniali sponsorzy: ";
if (sprawdz == 0)
{
cout << endl;
cout << "brak";
cout << endl;
}
while (z < j)
{
cout << endl;
cout << wspanialysponsor[z] << endl;
z++;
}
cout << endl;
cout << " Nasi sponsorzy: ";
if (sprawdz1 == 0)
{
cout << endl;
cout << "brak";
cout << endl;
}
z = 0;
while (z < k)
{
cout << endl;
cout << sponsor[z] << endl;
z++;
}
delete[] pd;
delete[] wspanialysponsor;
delete[] sponsor;
infile.close();
return 0;
}
Przykładowe dane pliku:
4
Sam Stone
2000
Freida Flass
100500
Tammy Tubbs
5000
Rich Raptor
55000