Problem z kopiowaniem zawartości plików

Problem z kopiowaniem zawartości plików
T1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
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

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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.
adf88
  • Rejestracja: dni
  • Ostatnio: dni
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ń
Kopiuj
while( !plik.eof() )
{
plik.getline( dane_tekst, 255 );

na

Kopiuj
while( plik.getline( dane_tekst, 255 ) )
{
CN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 38
1

Nie szybciej tak?

Kopiuj
plik1 << plik2.rdbuf();
T1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
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.