Piszę taki program, który odczytuje plik .txt z danymi osób zapisanymi w oddzielnej linii i ma skonwertować te dane na taki zapis, że jedna osoba i jej dane są w jednej linii. Na przykład:
Stary styl: Nowy styl:
ID: 1 1|Magda|ppppppp
Imie: Magda
Nazwisko: ppppppp
Jak na razie plik w nowym stylu się zapisuje, ale jest pusty. Są tylko kreski, czyli tak jakby program wgl nie widział tych danych.
#include <iostream>
#include <fstream>
#include <vector>
#include <sstream>
using namespace std;
struct Adresat {
int idOsoby = 0;
string imie, nazwisko, nrTel, email, adres;
};
int wczytajOsobyZPlikuWStarymStylu () {
string liniaTekstuDoOdczytania;
Adresat pomoc;
vector <Adresat> adresaci;
int nrLinii = 1;
int iloscOsob = 0;
fstream plikDoOdczytu;
plikDoOdczytu.open("ksiazka_z_adresami.txt", ios::in);
if (plikDoOdczytu.good()== true) {
while (getline(plikDoOdczytu, liniaTekstuDoOdczytania)) {
switch (nrLinii) {
case 1:
pomoc.idOsoby = atoi(liniaTekstuDoOdczytania.c_str());
break;
case 2:
pomoc.imie = liniaTekstuDoOdczytania;
break;
case 3:
pomoc.nazwisko = liniaTekstuDoOdczytania;
break;
case 4:
pomoc.nrTel = liniaTekstuDoOdczytania;
break;
case 5:
pomoc.email = liniaTekstuDoOdczytania;
break;
case 6:
pomoc.adres = liniaTekstuDoOdczytania;
break;
}
if (nrLinii >= 6) {
nrLinii = 1;
iloscOsob++;
} else {
nrLinii++;
}
}
plikDoOdczytu.close();
}
return iloscOsob;
}
int zapiszOsobeWNowymStylu() /*(int iloscOsob) */{
int iloscOsob;
wczytajOsobyZPlikuWStarymStylu();
Adresat pomoc;
string imie = "", nazwisko = " ", nrTel = " ", email = " ", adres = " ";
int idAdresata = iloscOsob + 1;
vector <Adresat> adresaci;
std::string s = std::to_string(idAdresata);
pomoc.idOsoby = adresaci.size() + 1;
pomoc.imie = imie;
pomoc.nazwisko = nazwisko;
pomoc.nrTel = nrTel;
pomoc.email = email;
pomoc.adres = adres;
adresaci.push_back(pomoc);
fstream plikDoZapisu;
plikDoZapisu.open("ksiazka_ZAdresami_Nowy_Format.txt", ios::out | ios::app);
if (plikDoZapisu.good() == true) {
plikDoZapisu << pomoc.idOsoby << "|" << pomoc.imie << "|" << pomoc.nazwisko << "|" << pomoc.nrTel << "|" << pomoc.email << "|" << pomoc.adres << "|" << endl;
plikDoZapisu.close();
}
else {
cout << "Nie udalo sie otworzyc pliku";
system("pause");
}
cout << "Osoba zostala dodana do ksiazki adresowej w nowym stylu" << endl;
system("pause");
iloscOsob++;
return iloscOsob + 1;
}
//program ma wczytywac w starym stylu, a zapisywac w nowym
string PobierzNazweStaregoPliku (string nazwaStaregoPliku) {
cout << "Podaj nazwe starego pliku zrodlowego z rozszerzeniem .txt: ";
cin >> nazwaStaregoPliku;
if (nazwaStaregoPliku == "ksiazka_z_adresami.txt") {
return nazwaStaregoPliku;
}
else
cout << "Podany plik nie istnieje!!";
}
void konwertujStaryPlikNaNowy () {
string staryPlik;
int iloscOsob;
PobierzNazweStaregoPliku(staryPlik);
wczytajOsobyZPlikuWStarymStylu();
zapiszOsobeWNowymStylu();
}
int main() {
string nazwaStaregoPliku;
konwertujStaryPlikNaNowy();
return 0;
}