Zapis i odczyt z pliku

0

Witam, mam takie zadanie:
Napisz program, który otwiera dwa pliki tekstowe do odczytu i jeden do zapisu.
Jego zadaniem jest połączenie poszczególnych wierszy z obu plików wejściowych i
zapisanie wyniku do pliku wyjściowego.
Przykładowy plik wejściowy 1: Przykłady plik wejściowy 2:
jajka koty pączki zero lasso
balony młotki finanse dramat
kamienie
Plik wyjściowy:
jajka koty pączki zero lasso
balony młotki finanse dramat
kamienie

Póki co mam to:

#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;
int main()
{
    fstream plik;
    plik.open( "dane.txt", ios::in );
    if( plik.good() )
    {
        string napis;
     
        while( !plik.eof() )
        {
            getline( plik, napis );
         
        }
        plik.close();
    } else cout << "Error! Nie udalo otworzyc sie pliku!" << endl;
    
    fstream plik2;
    plik2.open( "dane2.txt", ios::in );
    if( plik.good() )
    {
      string napis;
        while( !plik.eof() )
        {
            getline( plik, napis );
          
        }
        plik.close();
    } else cout << "Error! Nie udalo otworzyc sie pliku!" << endl;
    
    
    
    
    getch();
   

Zastanawiam się, w jaki sposób pobrać zawartość pliku, by móc ją zapisać do trzeciego pliku tekstowego? Czy chodzi tutaj o funkcję flush?

0
   vector<string> lines1,lines2;
   ifstream fin1("dane.txt");
   if(fin1) for(string line;getline(fin1,line);lines1.push_back(line)) {}
   else cout<<"Error: Nie udalo sie otworzyc pliku 1"<<endl;
   ifstream fin2("dane2.txt");
   if(fin2) for(string line;getline(fin2,line);lines2.push_back(line)) {}
   else cout<<"Error: Nie udalo sie otworzyc pliku 2"<<endl;
0

Dziękuję, ale jak teraz zapisać tą zawartość do trzeciego pliku?

0
ofstream fin3("dane3.txt");
for(size_t i=0;i<lines1.size();++i) fin3<<lines1[i]<<endl;
0

Dziękuję, ale czy taki zapis nie będzie zapisywał tylko zawartości pierwszego pliku do trzeciego?

0

Nie, ten fragment kodu zapisze do pliku dane3.txt wiersze zapisane w vector<string> lines1;

0

Dziękuję, mam jeszcze jedno pytanie, nie jestem w stanie skompilować programu - kompilator czepia się o slowo vector, jaki może być powód?

0

Porgram wygląda tak:

#include <iostream>
#include <fstream>
#include <conio.h>
#include<cstring>
using namespace std;

int main()
{
   vector<string> lines1,lines2;       
   ifstream fin1("dane.txt");
   if(fin1) for(string line;getline(fin1,line);lines1.push_back(line)) {
   
   }
   else cout<<"Error: Nie udalo sie otworzyc pliku 1"<<endl;
   ifstream fin2("dane2.txt");
   if(fin2) for(string line;getline(fin2,line);lines2.push_back(line)) {
   
   }
   else cout<<"Error: Nie udalo sie otworzyc pliku 2"<<endl;
   
   ofstream fin3("dane3.txt");
for(size_t i=0;i<lines1.size();++i) fin3<<lines1[i]<<endl;
    
    
    
    getch();
    return( 0 );
} 
0

Dziękuję, udało mi się odpalić program, ale zapisuje do nowego, trzeciego pliku tylko zawartośc pliku pierwszego, nie łączy ich

Wprowadziłem taką zmianę:

for(size_t i=0;i<lines1.size();++i) fin3<<lines1[i]<<lines2[i]<<endl; 

Zapisuje tak jak trzeba, ale w czasie odpalania się wiesza i windows zamyka program

0

Wg mnie to ewidentna próba wyłudzenia gotowca.

0

Nie, właśnie widzę, że popisałem bzdury, bo pętla idzie po liniach pliku pierwszego, ale kiedy robię osobną pętle która zapisuje drugi plik do trzeciego, to chociaż program już się nie wiesza, to zapisuje pliki jeden pod drugim - a one mają być połączone (3 linie, a nie 5 linii)

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