ďťż

Ładny brzuch

Jak w C++ Builderze 6 napisać program, który będzie przeszukiwał tekst zapisany w zmiennej i po napotkaniu nawiasu otwierającego, znajdzie zamykający i zapisze to, co będzie pomiędzy nimi w osobnej zmiennej?

gg 5286720



Jak niewaidomo jak coś napisać to znaczy, że trzeba użyć pętli :cheesy:
Ja proponuję utwórz pętlę while przeszukującą plik. W jej wnętrzu ustaw if szukający znaku otwarcia nawiasu, kopiuj wszystko do zamknięcia nawisu.

Algorytm nie najwyższych lotów (np. nawiasy zagnieżdżone rozłożą go na łopatki), ale pewnie chcesz użyć go tylko do prostego tekstu.

ja bym użył funkcji IndexOf. Zapisał bym pozycję i każdy następny znak sprawdzał w poszukiwaniu ). Dzieki temu nie bedzie problemu z nawiasami "zagnieżdżonymi"

Peace on earth, war on net...
Zapraszam na QLSITE
A na maila przesyłajcie wszystkie swoje artykuły, opinie, chęci współpracy, itp.

A co w takim przypadku?
abcdef(ghij(klmn)oprs)

Przepuszcone przez funkcję da
abcdef(ghij(klmn)

Raczej powinno się, znaleść pierwszy ")" i skopiować wszystko do "(" (cofając się). To da nam najbardziej "środkowy" nawias. Potem zrobić to samo tylko nie zwracać uwagi na już te zauważone "()".



A jak konkretnie to zrobić?

gg 5286720

cytat:Lord Y@nozsick napisał:

Jak w C++ Builderze 6 napisać program, który będzie przeszukiwał tekst zapisany w zmiennej i po napotkaniu nawiasu otwierającego, znajdzie zamykający i zapisze to, co będzie pomiędzy nimi w osobnej zmiennej?

string zmienna("to(jest jakiś)tekst");
string dest;
int index, count;
index = zmienna.find("(");
count = zmienna.find(")");
index++;
count -= index;
dest = zmienna.substr(index, count);

Pamiętaj o tym żeby przed tym tekstem dodać:
#include <string>
using namespace std;

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