c++ problemy z liczeniem ciagu znakow z tekstu
Ostatnio zmodyfikowano 2016-02-11 16:12
cool Temat założony przez niniejszego użytkownika |
c++ problemy z liczeniem ciagu znakow z tekstu » 2016-02-10 14:18:35 Siemka mam problem ciągle wyskakuje mi błąd kompilacji w ifie będący w petli for. Pętla ma za zadanie policzyć ilość wystąpień x - (czyli ciągu wyrazów) w tekście wyczytanym z pliku. Np jak jest wyraz banana a słowo szukane to ana to ma wyświetlić wartość 2 Pojawia sie taki komunikat: error: no match for 'operator==' in 'napis.std::basic_string<_CharT, _Traits, _Alloc>::operator[]<char, std::char_traits<char>, std::allocator<char> >(((std::basic_string<char>::size_type)j)) == x'| int linia = 1; int ile = 0; string napis;
int main() { string x; cout << "podaj ciag znakow: "; cin >> x; fstream plik; plik.open( "wejscie.txt", ios::in ); string napis; getline( plik, napis ); string szukaj = x; size_t pozycja = napis.find( szukaj ); int rozmiar = napis.length(); int rozmiar1 = x.length(); for( int j = 0; j <= rozmiar; j++ ) { if( napis[ j ] == x ); { ile = ile + 1; } } cout << ile;
|
|
carlosmay |
» 2016-02-10 14:59:26 Pojawia sie taki komunikat: error: no match for 'operator==' in 'napis.std::basic_string<_CharT, _Traits, _Alloc>::operator[]<char, std::char_traits<char>, std::allocator<char> >(((std::basic_string<char>::size_type)j)) == x'|
if( napis[ j ] == x );
{ ile = ile + 1; } | Instrukcja if...else |
|
cool Temat założony przez niniejszego użytkownika |
» 2016-02-10 15:11:15 To jak to mozna inaczej zastąpić? |
|
mateczek |
» 2016-02-10 15:20:08 for( int j = 0; j <= rozmiar; j++ ) { if( napis[ j ] == x ) { ile = ile + 1; } }
|
|
cool Temat założony przez niniejszego użytkownika |
» 2016-02-10 15:28:49 a jak rozbić napis żeby z niego wyciągnać wyraz |
|
carlosmay |
» 2016-02-10 16:43:03 Przecież std::string napis; nie jest tablicą wyrazów. std::string wyraz, x; char znak;
( wyraz == x )
( wyraz[ i ] == znak )
a jak rozbić napis żeby z niego wyciągnać wyraz |
Pobieraj wyrazy operatorem >> albo wyszukuj podciągi w zdaniu ograniczone spacjami (czy czym tam oddzielone są wyrazy w pliku). |
|
mateczek |
» 2016-02-10 22:22:42 #include <iostream>
using namespace std;
int main() { string napis { "bananana" }; string fragment { "ana" }; std::size_t found = 0; int licznik = 0; while( 1 ) { found = napis.find( fragment, found ); if( found == std::string::npos ) break; licznik++; found++; } cout << licznik << endl; } |
|
cool Temat założony przez niniejszego użytkownika |
» 2016-02-11 12:59:10 w tym problem że nie można używać żdanych funkcji bibliotecznych wyszukujących wystąpienia ciągu znaków w tekście |
|
« 1 » 2 |