zapis do pliku txt vectora stringów

0

Zaznajamiam się z biblioteką fstream. Napisałem taki kod:

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

using namespace std;

void blad_numeru(void);
void blad_braku(void);

int main()
{
    vector <string> ksiazki;

    char wybor;
    bool koniec=0;
    int nr_ksiazki;
    string nazwa_ksiazki;

    do
    {
        cout << "---MENU---" << endl << endl;
        cout << "1. Dodaj ksiazke." << endl;
        cout << "2. Usun ksiazke." << endl;
        cout << "3. Wyswietl baze." << endl;
        cout << "4. Zapisz baze." << endl;
        cout << "5. Wczytaj baze." << endl;
        cout << "6. Wyjdz." << endl << endl;

        cout << "Wybor: "; cin >> wybor;
        cout << endl;


        switch(wybor)
        {
            case '1':

                cout << "Podaj tytul ksiazki: "; cin >> nazwa_ksiazki;
                cout << endl;

                ksiazki.push_back(nazwa_ksiazki);

                break;

            case '2':

                cout << "Ktora ksiazke usunac ?" << endl;
                cout << "Nr: "; cin >> nr_ksiazki;

                if(ksiazki.size()>0)
                {
                    ksiazki.erase(ksiazki.begin()+nr_ksiazki);
                }
                else
                {
                    blad_braku();
                }

                break;

            case '3':

                cout << "Baza zawiera " << ksiazki.size() << " ksiazek." << endl << endl;

                for(unsigned int i=0;i<=ksiazki.size()-1;i++)
                {
                    cout << "Ksiazka [" << i+1 << "]: " << ksiazki[i] << endl;
                }

                system("pause");

                break;
            case '4'://zapis
                ofstream plik("zapis.txt");

                for(unsigned int i=0;i<=ksiazki.size()-1;i++)
                {
                    plik << ksiazki[i];
                }
                //plik.open("zapis.txt", ios::out);
                //plik.write(( char * ) & ksiazki[ 0 ], ksiazki.size() * sizeof( int ) );
                //plik.close;

                break;
            case '5'://odczyt
                break;
            case '6':
                cout << "Dziekuje za uzycie programu." << endl << endl;

                koniec=1;

                system("pause");

                break;
            default:
                blad_numeru();
                break;
        }
    }
    while(koniec!=1);

    return 0;
}

void blad_numeru()
{
    cout << "Bledny numer." << endl << endl;

    system("pause");
}

void blad_braku()
{
    cout << "Brak ksiazek w bazie." << endl << endl;

    system("pause");
}

Nie działa, tzn. są błędy kompilacji.

user image

Chcę żeby był zapis do pliku txt zawartości tego vectora ksiazki i odczyt z pliku txt.

1
case '4':
	ofstream plik("zapis.txt");
	
	...

	break;

Jeśli definiujesz zmienne wewnątrz bloku case, musisz cały blok objąć klamrami { }.

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