Zapis i odczyt z pliku

ArturHa
2014-06-12 10:56
ArturHa
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?

Pozostało 580 znaków

2014-06-12 11:12

Rejestracja: 14 lat temu

Ostatnio: 3 minuty temu

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;

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

ArturHa
2014-06-12 11:22
ArturHa
0

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

Pozostało 580 znaków

2014-06-12 11:45

Rejestracja: 14 lat temu

Ostatnio: 3 minuty temu

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

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

ArturHa
2014-06-12 12:21
ArturHa
0

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

Pozostało 580 znaków

2014-06-12 12:29

Rejestracja: 14 lat temu

Ostatnio: 3 minuty temu

0

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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

ArturHa
2014-06-12 12:35
ArturHa
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?

#include <vector> - fourfour 2014-06-12 12:38

Pozostało 580 znaków

ArturHa
2014-06-12 12:36
ArturHa
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 );
} 

Pozostało 580 znaków

ArturHa
2014-06-12 13:22
ArturHa
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

czy te dwa pliki mają taką samą liczbę linii? - fourfour 2014-06-12 13:27
@fourfour, w pierwszym poście podano przykłady plików. - _13th_Dragon 2014-06-12 13:29
@_13th_Dragon widziałem, to było pytanie pomocnicze dla ArturHa mające naprowadzić go na rozwiązanie. - fourfour 2014-06-12 13:46

Pozostało 580 znaków

2014-06-12 13:29

Rejestracja: 14 lat temu

Ostatnio: 3 minuty temu

0

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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
Z przeniesieniem wątku do kosza jeszcze się wstrzymam, ale będę miał oko na ten wątek; - furious programming 2014-06-12 15:27

Pozostało 580 znaków

ArturHa
2014-06-12 13:29
ArturHa
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)

Pozostało 580 znaków

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