Iterator stringu ( porównanie )
Ostatnio zmodyfikowano 2011-05-10 19:58
Mrowqa Temat założony przez niniejszego użytkownika |
Iterator stringu ( porównanie ) » 2011-05-10 19:22:57 Witam! Mam pytanie odnośnie iteratora do stringu: Otóż chcę sprawdzić, czy nie wyszedł spoza stringu ( it_obj >= str_obj.end() ) tylko, że to nie chce działać ... Jest jakiś inny sposób sprawdzenia ( o ile powyższy jest błędny :D ). Taka interpretacja co do tego powyżej - skoro nie wolno tak porównywać ( chyba, że mam gdzieś błąd w kodzie ) to czy dozwolone jest to niżej: it_obj = it_obj2 + 3; * it_obj > 'z' it_obj < it_obj2
Z góry dzięki ! Mrowqa |
|
pekfos |
» 2011-05-10 19:24:46 no brawo. teraz nie wiadomo o co chodzi. ani logu nie dałeś ani nic.. |
|
ison |
» 2011-05-10 19:27:28 o coś takiego chodzi? #include <string> #include <cstdio>
int main() { std::string str = "abc"; std::string::iterator it = str.begin(); it += 5; if( it >= str.end() ) printf( "poza zakresem\n" ); }
|
|
Mrowqa Temat założony przez niniejszego użytkownika |
» 2011-05-10 19:31:51 Dokładnie ;) Tylko, że u mnie mimo to pętla nie chce się przerwać ;/ Sprawdzę kod jeszcze raz ... PS tamte moje 'wątpliwości' to prawda czy nie ?? EDIT: sprawdziłem, i jedynie błąd może tkwić tu, ale go tu nie widzę: while( * drug < 'A' || * drug > 'z' ||( * drug > 'Z' && * drug < 'a' ) ) { if( drug >= tekst_pomocniczy.end() ) { pierw = 2; break; } drug++; }
Korzystam z VC++ 2010 Pozdrawiam, Mrowqa |
|
pekfos |
» 2011-05-10 19:38:09 ( * drug > 'Z' && * drug < 'a' ) error! error! warunek bez sensu. chyba że chodzi ci o [ \ ] ^ _ ` bo gdyby było 'A' zamiast 'a' to nigdy by się nie spełnił. |
|
Mrowqa Temat założony przez niniejszego użytkownika |
» 2011-05-10 19:41:36 Co w tym złego ?? Pętla sprawdza czy znak nie jest literą. Zrobiłem sobie wydruk kontrolny i okazało się, że zmienna pierw NIGDY nie wyniosła 2 ;/ Skontroluje pętle jeszcze raz ... Może i warunek jest zły, ale ja myślę, że jest dobry ^^
Pozdrawiam, Mrowqa |
|
pekfos |
» 2011-05-10 19:44:05 jak chodzi ci czy znak nie jest literą użyj isalpha(). będzie prościej. if( !isalpha( znak ) ) printf( "nie litera" ); |
|
Mrowqa Temat założony przez niniejszego użytkownika |
» 2011-05-10 19:45:41 Sprawdzę tę funkcyjkę ;) Po moim kolejnym wydruku kontrolnym okazało się, że w ogóle do wnętrza pętli program nigdy nie wszedł ... Wnioskując nie można porównywać tak znaków: * it_obj < 'Z' a mi na tym zależy ( później w kodzie ). Co zrobić by móc tak porównać ?? Jakaś metoda iteratora, zwracająca wartość char? A może rzutowanie static_cast ?? |
|
« 1 » 2 |