Zapis wartości zmiennej do pliku

0

Dlaczego nie moge zapisac wartosci zmiennej qwe do plik ?

void modyfikacja()
{
odczyt();
fstream abd;
string qwe;
    string strReplace ;
    string strNew ;
    cout<<"wpisz wyraz jaki chcesz zastapic: ";cin>>strReplace;
    cout<<"podaj nowy wyraz: ";cin>>strNew;
   plik.open( "bazadanych.txt", std::ios::in|std::ios::in);
    abd.open( "fileout.txt", std::ios::in|std::ios::in);

    string strTemp;

    while(plik >> strTemp)
    {
        if(strTemp == strReplace){
            strTemp = strNew;

        }
      abd << strTemp << " ";

    }
    abd>>qwe;
    qwe>>plik;

}
1

Hej, poczytaj:

  • co to fstream i co robi flaga std::ios::in (której używasz)
  • co robi flaga std::ios::out
  • co to fstream, ofstream, ifstream
  • zamykanie plików!

tutaj masz tutka w języku ang. - http://www.cplusplus.com/doc/tutorial/files/

std::ios::in|std::ios::in // to nie ma sensu poczytaj jak działa operacja bitowa or

(musisz wykorzystac ta flage std::out ew ofstream i stworzyć taki strumień, który pozwoli ci na zapis do pliku)

0
abd.open( "fileout.txt", std::ios::in|std::ios::in);

Tu jest bubel – otwierasz plik do odczytu, a później próbujesz do niego wpisać dane. Poza tym nie zamykasz go.

0

@Madek123, @furious programming -- w C++ mamy RAII -- pliki zamykają się same na końcu zasięgu: " Note that any open file is automatically closed when the fstream object is destroyed." http://www.cplusplus.com/reference/fstream/fstream/close/

0

@koszalek-opalek: wszystkie przykłady jakie widziałem, zawsze używały close do zamykania. Nawet pod podanym linkiem, przykład go zawiera. Przypadek? :P

0

Zapisujesz do abd a potem chcesz cos odczytać będąc na końcu pliku... Jak myślisz, co zostanie odczytane? Pomijam już to, co zauważono wcześniej, czyli masz flagi przy otwarciu pliku pomieszane...

0
furious programming napisał(a):

@koszalek-opalek: wszystkie przykłady jakie widziałem, zawsze używały close do zamykania. Nawet pod podanym linkiem, przykład go zawiera. Przypadek? :P

Może za mało przykłądów widziałeś? :P Choć rzeczywiście przerażająco wiele osób robi close bez potrzeby...

Link podałem ten, bo jest to opis metody close, gdzie jest zaznaczone, że jest zwykle niepotrzebna (cytat był stamtąd). :)

Jeszcze linki:
https://stackoverflow.com/questions/4802494/do-i-need-to-close-a-stdfstream
https://stackoverflow.com/questions/748014/do-i-need-to-manually-close-an-ifstream
http://en.cppreference.com/w/cpp/io/basic_ofstream/close

:)

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