ďťż

Ładny brzuch

Witam

Mam mały problem w programowaniu w C++ chce z pliku txt wyszukać fragment i wyświetlić go na ekran (np. Od „ jakiegoś tekstu ” Do „ . ”).
Zatrzymałem się na wyszukiwaniu może ktoś z was troszkę nakierować z jakiej funkcji mam skorzystać ?
Użytkownik migajek edytował ten post 17 luty 2006, 23:42


1. Jeśli plik nie jest bardzo duży możesz wczytać go do zmiennej typu string i użyć string::find, ale nie jest to zbyt optymalna metoda.
2. Możesz napisać własną funkcję, która będzie robić coś takiego.
Jej schemat działania może być na przykład taki:
1. Pobiera znak z pliku, zapisuje który to znak i wchodzi w pętlę, w której pobiera kolejne znaki dopóki są one takie jak kolejnke znaki szukanego tekstu. 2. Jeśli przejdzie przez cały szukany tekst to zwraca numer początkowego znaku i wychodzi z funkcji. Jesli nie to zaczyna ponownie szukać od ostatnio zapisanego numeru znaku, przy którym wszedł w pętlę.
Oczywiście to też nie jest optymalne raczej, ale powinno działać.

Napisałem coś takiego ale nie działa :( może ktoś mi poprawi ten kod ???
Od niedawna zainteresowałem się programowanie i jeszcze jestem w tym zielony jestem ;)


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

using namespace std;

int main(int argc, char *argv[])
{
    fstream plik_otworz;
    char znak,otworz[25];
    string ch;
    raz:
    system("cls");   
    cout << "Podaj nazwe pliku: ";
    cin >> otworz;
    plik_otworz.open(otworz,ios::in);
    if (!plik_otworz)
{
  cout << "Pliku nie mozna otworzyc" << endl;
  cout << "Czy chcesz wczytajć plik jeszczeraz (T/N): ";
  cin >> znak;
  if(znak=='t')
{
  goto raz;
}
  else if(znak=='n');
{
  cout << "Koniec" << endl;

}
  else

         
  while (!plik_otworz.eof())
{
       
  ch = plik_otworz.get();
     
}
  string tekst;     
  string od="Tak";
  string doo=".";
  tekst = ch.substr(ch.find(od)+od.length(),ch.find(doo)-doo.length());
  cout << tekst << endl;
   
  plik_otworz.close();
  system("PAUSE");   
  return EXIT_SUCCESS;
}
}


while (!plik_otworz.eof()) {          ch = plik_otworz.get();       }
Zauważ, że w ten sposób za każdym razem przypisujesz ch jeden znak odczytany z pliku. Powinieneś zamiast tego dodawać ten znak do ch, czyli "+=" zamiast "=".
Użytkownik Chmurek edytował ten post 17 luty 2006, 23:53


Super ! :) działa dzieki.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •