Zapis wartości zmiennej do pliku

Zapis wartości zmiennej do pliku
0

Dlaczego nie moge zapisac wartosci zmiennej qwe do plik ?

Kopiuj
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;

}
edytowany 1x, ostatnio: flowCRANE
M1
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 4 lata
  • Postów:20
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/

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

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

edytowany 4x, ostatnio: flowCRANE
M1
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 11 godzin
  • Lokalizacja:Tuchów
  • Postów:12171
0
Kopiuj
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.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
koszalek-opalek
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 2 lata
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/

M1
dzięki, nie wiedziałem :p
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 11 godzin
  • Lokalizacja:Tuchów
  • Postów:12171
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


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
kaczus
  • Rejestracja:około 10 lat
  • Ostatnio:10 dni
  • Lokalizacja:Łódź
  • Postów:1402
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...


Ogólnie na prace domowe mam stawki zaporowe. Czasem coś o programowaniu znajdzie się na mojej stronie
koszalek-opalek
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 2 lata
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

:)

kaczus
Obaj macie po trochę racji. Samo close w tym wypadku nie jest niezbędne, ale miesci sie w konwencji "gdy coś otwieramy ręcznie, to ręcznie zamknijmy". Więc niezbędne nie je jest, ale ze względów estetycznych bym użył.
gośćabc
"przerażająco" wygrało

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.