Problem z kopiowaniem zawartości plików

0

Mam taki kod kopiujący zawartość jednego pliku do drugiego:

plik.open( "data/pliki/a.txt", std::ios::in );
while( !plik.eof() )
{
plik.getline( dane_tekst, 255 );
plik2.open( "data/pliki/b.txt", ios::app);
plik2<<dane_tekst<<"\n";
plik2.close();plik2.clear();
}
plik.close();plik.clear();

w pliku a mam dane:
1
2
3
4
5

kopiuje do pliku b wszystko oprócz pierwszej linii, tzn. w pliku b po skopiowaniu mam:
2
3
4
5

Co może być tego przyczyną?

z góry dziekuję za wszelką pomoc

1

Tragedia.

  1. Czemu cały czas otwierasz i zamykasz ten plik wynikowy? Wiesz ile to trwa czasu? nie możesz go otworzyć PRZED pętlą i zamknąć ZA pętlą?
  2. Wiesz że operator << zapisuje dane tylko do pierwszego białego znaku?
  3. Uruchom to pod debuggerem i zobacz co masz wczytane przez kolejne getline.
1
  1. Brakuje flagi ios::out w pliku wyjściowym
  2. Nie tak się sprawdza czy doszliśmy do końca pliku. Najpierw próba odczytu, później sprawdzamy flagę EOF. Zamień
while( !plik.eof() )
{
plik.getline( dane_tekst, 255 );

na

while( plik.getline( dane_tekst, 255 ) )
{
1

Nie szybciej tak?

plik1 << plik2.rdbuf();
0

dzięki panowie - teraz nie dość że wszystko działa to jeszcze wydajność programu tez się poprawiła...

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.