Witam wszystkich,
Mam do napisania aplikację, która wczytuje słownik z wyrazami i wyłuskuje z niego konkretne wyrazy, które następnie umieszcza w jakimś komponencie (np. RichEdit). Zrobienie tego za pomocą funkcji getline() jest stosunkowo proste, ale wydajność takiego rozwiązania pozostawia wiele do życzenia. Pętla musi przejść przez ponad 100,000 wierszy w pliku i dokonać porównania ze wzorcem, w celu wyłuskania interesującego mnie wyrazu.
Znalazłem w internecie sposób, jak wczytać plik słownika błyskawicznie do jakiegoś komponentu. Oto on:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ifstream plik("PS_WYRAZY.txt");
char* buf;
plik.seekg(0,ios::end);
int length=plik.tellg();
plik.seekg(0,ios::beg);
buf=new char[length];
plik.read(buf,length);
Form1->RichEdit1->Lines->Add(buf);
}
I faktycznie wczytanie całego pliku do komponentu RichEdit następuje błyskawicznie. Ale...
W jaki sposób mam dokonywać porównania i wpisać tylko interesujące mnie słowa? Zmienna "buf" to tablica, która zawiera ponad 1,300,000 indeksów (każda litera w osobnym indeksie) i nijak nie wiem jak to ugryźć...
Istnieje jakiś sposób na przeszukiwanie tego bufora w celu znalezienia konkretnego słowa? A może trzeba zastosować zupełnie inne rozwiązanie? Męczę się z tym od wczoraj i nie mam już pomysłu. Nawet google przestały mi pomagać. ;-P
Dziękuję z góry za zainteresowanie i pomoc.
Pozdrawiam, Dex.