Zamiana zapisu pliku

0

Witam,
Piszę program, który ma za zadanie przekonwertować dane zapisane wers po wersie (zdjęcie nr 1) na zapis taki jak na zdjęciu nr 2. Problem w tym, że mój program wykonuje tę zmianę, ale zapisuje wszystkich w jednej linii (zdjęcie nr 3), a ja chciałabym aby nowa osoba była w nowej linii.old.JPGnew.JPG
wrong.JPG
To mój kod:

#include <iostream>
#include <fstream>
#include <vector>
#include <sstream>
#include <algorithm>

using namespace std;

int main()
{
    string nazwaStaregoPliku = " ";
    string liniaDoOdczytania;
    stringstream ss(liniaDoOdczytania);
    string tymczas = "";
    int nrLinii = 1;

    cout << "Podaj nazwe starego pliku zrodlowego: ";
    cin >> nazwaStaregoPliku;

    if (nazwaStaregoPliku == "ksiazka_z_adresami.txt")
    {
        ifstream staryPlik ("ksiazka_z_adresami.txt");
        ofstream nowyPlik ("ksiazka_adresowa_nowy_format.txt");

        while ( !staryPlik.eof())
        {
            (getline(staryPlik, tymczas, '|'));
            ss << tymczas;
            tymczas.clear();
            while ( !ss.eof())
            {
                ss >> tymczas;
                nowyPlik << tymczas << "|";
                if (nrLinii >=6) {
                    nrLinii = 1;
                }
            }
            nowyPlik << std::endl;
            ss.clear();
        }

        staryPlik.close();
        nowyPlik.close();
    }
    else
    {
        cout << "Bledna nazwa pliku!" << endl;
        exit(0);
    }
    cout << "Konwersja zostala przeprowadzona" << endl;


    return 0;
}

2

Przy minimalnej liczbie zmian — zacznij korzystać z tej Twojej zmiennej nrLinii. Zwiększaj go co wczytaną linijkę i gdy jej wartość stanowi wielokrotność szóstki (bo informacje o osobie mają po sześć linijek), dodawaj znak nowej linii.

1

To strasznie! Czemu tak przekombinowane?
Wystarczy JEDEN wiersz kodu!

#include <fstream>

using namespace std;

int main()
{
    ifstream fin("ksiazka_z_adresami.txt");
    ofstream fout("ksiazka_adresowa_nowy_format.txt");
    for(int ch,count=0;(ch=fin.get())!=EOF;) fout.put(((ch=='\n')&&(((++count)%=6)!=0))?'|':ch);
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1