Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

rozdz. 16 kłopoty z pisaniem do pliku w kursie C++

Ostatnio zmodyfikowano 2010-01-27 10:17
Autor Wiadomość
marek
Temat założony przez niniejszego użytkownika
rozdz. 16 kłopoty z pisaniem do pliku w kursie C++
» 2010-01-24 22:52:54
W pliku docek.txt jest tekst "Ala ma".
Poniższy program czyta plik docek.txt i wyświetla "Ala ma" na ekranie.(działa!)

Czy ktoś mógłby zmodyfikować ten program, tak aby dopisać "kota" do pliku docek.txt w/g zasady:
p.16.6.1. Zapisywanie danych za pomocą strumienia
"nazwa_zmiennej_plikowej<<zmienna_ktora_ma_zostac_zapisana_do_pliku;"
Próbuję różnych kombinacji i nic!
C/C++
#include <iostream>
#include <conio.h>
#include <fstream>
#include <cstring>
int main()
{
    std::fstream plik;
    std::string kartka;
    plik.open( "docek.txt", std::ios::in | std::ios::out );
    if( plik.good() == true )
    {
        getline( plik, kartka );
        plik.close();
    }
    else std::cout << "Dostep do pliku zostal zabroniony!" << std::endl;
   
    std::cout << kartka;
    return( 0 );
}
P-13279
malan
» 2010-01-24 23:34:37
C/C++
#include <iostream>
#include <conio.h>
#include <fstream>
#include <cstring>
int main()
{
    std::fstream plik;
    std::string kartka;
    plik.open( "docek.txt", std::ios::in );
    if( plik.good() == true )
    {
        getline( plik, kartka );
        plik.close();
    }
    else std::cout << "Dostep do pliku zostal zabroniony!" << std::endl;
   
    std::cout << "Zawartosc pliku:" << kartka << std::endl;
   
    plik.clear();
    plik.open( "docek.txt", std::ios::out );
    if( plik.good() )
    {
        plik << kartka << " kota.";
        plik.close();
    }
    return( 0 );
}
P-13282
marek
Temat założony przez niniejszego użytkownika
Dzięki malan (√ιק)
» 2010-01-25 09:55:24
Do pojedynczej instrukcji "plik<<kartka<<" kota.";" doszedłem już wcześniej.

Ale z kursu nie wynikało że "plik<<kartka<<" kota.";" należy obudować kawałkiem programu jak poniżej. Szkoda, że przy tak trudnym temacie, jak obsługa plików autorzy nie podali przykładów! Kurs jest świetny, ale tak jak życiu, nie ma rzeczy idealnych.
Tak czy owak, bez pomocy nie przeszedłbym dalej.
C/C++
plik.clear();
plik.open( "docek.txt", std::ios::out );
if( plik.good() )
{
    plik << kartka << " kota.";
    plik.close();
}
P-13287
malan
» 2010-01-25 15:00:33
To jest kurs C++, nie kurs nauki myślenia. Do tego mogłeś dojść sam...
C/C++
plik.open( "docek.txt", std::ios::out ); // Paragraf 16.3
if( plik.good() ) // Paragraf 16.3.1
{
    plik << kartka << " kota."; // Paragraf 16.6.1
    plik.close(); // Paragraf 16.4
}
Jedyna funkcja, której nie ma w kursie to clear, ale bez niej też da się napisać ten program.
C/C++
std::fstream plik2;
plik2.open( "docek.txt", std::ios::out );
if( plik2.good() )
{
    plik2 << kartka << " kota.";
    plik2.close();
}
//edit:
Poprawione.
P-13289
marek
Temat założony przez niniejszego użytkownika
a gdzie są te paragrafy 23.3 23.3.1 ....?
» 2010-01-25 17:27:25
P-13299
malan
» 2010-01-25 23:38:21
Sory, mam wydrukowaną starszą wersję kursu. Miałem na myśli paragrafy 16.x.
P-13315
marek
Temat założony przez niniejszego użytkownika
czy otwarcie pliku powoduje automatyczne kasowanie jego zawartości?
» 2010-01-26 14:38:32
Tak by wynikało z programu

include <fstream>
int main()
{
  std::fstream plik;
  plik.open("docek.txt",std::ios::out);
  return(0);
}
Przed uruchomieniem programu w "docek.txt" był "kot"
Po wykonaniu programu w "docek.txt" nic nie było.

P-13322
malan
» 2010-01-27 01:05:21
Tak, jeśli otworzysz pliku do zapisu (std::ios::out). Żeby tego uniknąć dodaj flagę std::ios::app, która spowoduje, że dane podczas otwarcie pliku do zapisu nie znikną oraz będą zapisywanie na końcu pliku.
P-13325
« 1 » 2
  Strona 1 z 2 Następna strona