wczytywanie z pliku i zapis do innego

0

Jest ktos w stanie wytlumaczyc w jaki sposób napisać program by w pliku wyszukal
<tekst>mam problem </tekst>...... i wypisal w drugim pliku "mam problem" ?

0
string fnd="mam problem",content;
ifstream ifs("pliku.txt");
ofstream ofs("drugim_pliku.txt");
getline(ifs,content,'\0');
if(content.find(fnd)!=string::npos) ofs<<fnd;
0

Nie działa to za bardzo..chciałbym, żeby jak znajdzie <tekst> skopiował to co jest za nim aż napotka </tekst>, a on tego nie robi..

0

Dostałeś przykład odczytu, zapisu i wyszukiwania.
Jeżeli nie umiesz z tego złożyć tego czego potrzebujesz to zapraszam na PW zawsze chętnie wykonam zlecenie.

0

Za pomocą std::string.find() odszukujesz w tekście znacznik <tekst> i </tekst>, zapisujesz ich pozycję i wyciągasz wartość z pomiędzy ich za pomocą std::string.substr()

Można to zrobić np. tak:

std::string tekst = "To jest jakis tekst <tekst>szukany tekst</tekst> i tu tez jakis tekst";
std::string znalezione = tekst.substr(tekst.find("<tekst>") + 7, tekst.find("</tekst>") - tekst.find("<tekst>") - 1);

Sorry jeżeli będą jakieś błędy, piszę z telefonu.

0

Najprościej można stworzyć 2 zmienne typu string . Do 1 zmiennej ładujesz zawartość pliku a do 2 znaki tylko pomiędzy <tekst></tekst>.
Np.

 
string line; //zmienna zawierająca zawartość pliku 
string line2; //zmienna zawierająca znaki tylko miedzy  <tekst></tekst>.

for(int i=0; i<line.length(); ++i) {

          if(line[i]=='>') {
                 int j=i+1; line2='\0';

               while(line[j]!='<') {
                    line2+=line[j];
                     j++;
                    }
                  //tutaj zapis do 2 pliku np : nazwa_strumienia<<line2<<endl;
                  i=j+6;
                  }





}



Jeżeli są jakieś błędy to skorygujcie (szybko pisałem)
Ten kod oczywiście zapisuje dane pomiędzy kilkoma takimi znacznikami <tekst></tekst>

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