Występowanie ciągu znaków w pliku
Ostatnio zmodyfikowano 2016-04-12 12:38
jaśkoo Temat założony przez niniejszego użytkownika |
Występowanie ciągu znaków w pliku » 2016-04-11 13:24:55 Witajcie, muszę napisać program, który zliczy ilość wystąpień pewnego ciągu znaków w pliku. Znalazłem kilka artykułów o funkcji find, ale ona zwraca pozycję gdzie występuje znak, albo gdzie zaczyna się wyszukiwana sekwencja, ale czy istnieje jakaś funkcja zwracająca true/ false w zależności od tego czy dany ciąg wyrazów występuje w pliku albo coś podobnego? |
|
mateczek |
» 2016-04-11 15:48:52 możesz śmiało założyć, że jeśli funkcja find zwróci pozycje znaku/ciągu to ten znak/ciąg występuje !!! |
|
jaśkoo Temat założony przez niniejszego użytkownika |
» 2016-04-12 09:22:16 Pomyślałem o tym, ale gdy wyraz nie występuje to zmienna, do której przekazywana jest pozycja przyjmuje jakieś losowe wartości. Poza tym pytanie dotyczyło tego czy istnieje taka funkcja jak napisałem wyżej. |
|
mateczek |
» 2016-04-12 12:38:31 nie losowe tylko określoną string::nops bodajże "-1" #include <iostream> #include<string> using namespace std;
int main( int argc, char * argv[] ) { string caly { "ala al al la mal" }; string frag { "al" }; size_t poss = caly.find( frag ); int licznik = 0; while( poss != string::npos ) { licznik++; poss = caly.find( frag, poss + frag.size() ); } cout << licznik << endl; } funkcja zwracająca true/ false w zależności od tego czy dany ciąg wyrazów występuje[...] Poza tym pytanie dotyczyło tego czy istnieje taka funkcja jak napisałem wyżej.
|
funkcja taka była by bez sensu i bezużyteczna!!! bo jeśli chciałbyś tylko informacje true/false. To za żadne skarby nie wykrył byś ile razy występuje w stringu dany fragment. tak na marginesie ale masz jak chcesz !!! #include <iostream> #include<string> using namespace std;
int main( int argc, char * argv[] ) { string caly { "ala al al la mal" }; bool wystepuje =( caly.find( "al" ) != string::npos ); cout << std::boolalpha << wystepuje << endl; wystepuje =( caly.find( "mama" ) != string::npos ); cout << wystepuje << endl; }
|
|
« 1 » |