kopiowanie pliku linijka po linijce

0

Chce skopiować tekst do nowego pliku linijka po linijce.

Oto moja Idea:

1.Otwieram plik z którego chce skopiować biorę linijkę zapisuje do stringu.
2.Otwieram plik do którego chce zapisać.
3.zapisuje zawartość stringu w którym jest linijka do pliku.
4.Zamykam plik i tak wkółko.


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
   string contain_of_file,bufor;

   ifstream NewFile; 
fstream Nowy1;
 NewFile.open("plik1.txt");
while(NewFile.good())
    {
    getline(NewFile, contain_of_file);
    cout<<contain_of_file;
   Nowy1.open("tekst.txt", ios::app);
        Nowy1<<contain_of_file;
Nowy1.close();
    }
 NewFile.close();

 cin.get();
 return 0;
  }

Program kompiluje się ale nie kopiuje....

1
  1. Nowy plik powinieneś stworzyć przed pętlą i dopisywać wierszami (lub po ludzku znak po znaku tak samo czytać)
  2. Dla nowego pliku użyj ofstream lub flagę ios::out
#include <fstream>
using namespace std;

int main()
  {
   ifstream fin("plik1.txt")
   ofstream fout("tekst.txt");
   for(char ch;fin.get(ch);)  fout.put(ch);
   return 0; // pliki same się zamkną w destruktorze.
  }
0

Chciałabym do tego dodać dodawanie wcześniej wczytanego słowa, jeśli występuje pewne słowo w lini.

Oto mój kod:


 
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
int main()
{
   string contain_of_file,bufor,word;
  string::size_type position;
  cout<<"Podaj słowo";
  cin>>word;
   ifstream NewFile; 
ofstream Nowy1;
Nowy1.open("tekst.txt", ios::app);
 NewFile.open("plik1.txt");
while(NewFile.good())
    {
    getline(NewFile, contain_of_file);
   
      Nowy1<<contain_of_file;
    position=contain_of_file.find("Zuzia"); 
        if(position!=string::npos)
        {
        Nowy1<<word;

        }
       
 
    }
Nowy1.close();
 NewFile.close();
 
 cin.get();
 return 0;
  }
0

Jakie jest pytanie teraz?

0

Aktualny kod:



#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
int main()
{
   string contain_of_file,bufor,word,empty=" ",new_line="\n";
   string polaczenie;
  string::size_type position;
  cout<<"Podaj słowo";
  cin>>word;
   ifstream NewFile; 
ofstream Nowy1;
Nowy1.open("tekstpa.txt", ios::app);
 NewFile.open("plik1.txt");
while(NewFile.good())
    {
    getline(NewFile, contain_of_file);
    cout<<contain_of_file;
      
    position=contain_of_file.find("Zuzia"); 
        if(position!=string::npos)
        {
        polaczenie=contain_of_file+empty+word+new_line;
 Nowy1<<polaczenie;
        }
       Nowy1<<contain_of_file;
 
    }
Nowy1.close();
 NewFile.close();
 
 cin.get();
 return 0;
  }

Jak wczytywać słowo po słowie? To by mi rozwiązało mój problem z znakiem nowej lini, jak nie dodam to mi wszystkie wsiąkną jak dodam towidzi nową linię i od nowa się nią zajmuje mimoże już ją robił. (Przynajmniej tak sądze po tym co mam w pliku tekstowym.

0

słowo po słowie: NewFile>>contain_of_file
z tym że nie rozumiem jak ci to ma pomóc ze znakami nowej linii których zwyczajnie nie wstawiasz do nowego pliku.

0

Mam na myśli...
Może inaczej chciałabym getline brać całą linię następnie dzielić to na słowa, sprawdzać tamtym warunkiem czy jest specyficzne słowo na przykład imie jeśli tak to dodawać znak spacji.

Następnie zpowrotem łączyć to w całą linijkę dodawać znaknowej lini i zapisywać do pliku.

Raczej najpierw sprawdzać czy jest słowo a dopiero później dzielić, mniej roboty dla programu.

Dodaje do "polaczenie" newline gdzie jest znak nowej lini, czy jest to poprawne?

1

Stanowczo rozważ zmianę kierunku na np dziennikarstwo:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main()
  {
   cout<<"Podaj słowo";
   string word,line;
   cin>>word;
   ifstream fin("plik1.txt");
   ofstream fout("tekstpa.txt");
   while(getline(fin,line))
     {
      if(line.find("Zuzia")!=string::npos) fout<<line<<" "<<word<<endl;
      else fout<<line<<endl;
     }
   //fin.close(); // to nie jest potrzebne destruktor zamknie
   //fout.close(); // to nie jest potrzebne destruktor zamknie
   //cin.get(); // jeżeli to jest potrzebne to wymień IDE na jakieś współczesne
   return 0;
  }

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