Pobieranie z pliku w pętli
Ostatnio zmodyfikowano 2018-08-08 17:53
Wolfff Temat założony przez niniejszego użytkownika |
Pobieranie z pliku w pętli » 2018-08-08 15:17:06 Cześć, już piszę to tak długo że sam sobie mieszam w głowie i nie wiem gdzie popełniłem błąd. Plik tekstowy jest podzielony na części. Najpierw pobieram wszystkie linijki od wystąpienia linijki z np.: "+++" , do wystąpienia "---". Po wystąpieniu "---" znowu pobieram linijki tekstu do innej zmiennej do wystąpienia "#" itp. Starter to liczba która najpierw jest wyszukiwana w pliku żeby określić miejsce od którego należy zacząć te operacje a stopper to liczba określająca początek następnego bloku tekstu na którym nie chcę przeprowadzać operacji. Najładniej by to wyglądało przy użyciu switch(tekst) ale to nie działa z std::string, więc zostałem zmuszony używać takiej formy. Przechodząc do problemu: pobiera dobrze po "+++" potem pobiera tylko linijke "---" i ignoruje wszystko po tym, następnie dobrze pobiera po "#" i ignoruje wszystko znowu po "##". Jeżeli ktoś ma pomysł jak to poprawić żeby działało w zamierzony sposób lub poprawić czytelność kodu to byłbym bardzo wdzięczy za sugestie! std::getline( plik, tekst ); if( !( std::string::npos == tekst.find( starter ) ) ) { std::cout << "found it!" << std::endl; while( tekst != stopper ) { std::getline( plik, tekst ); if( tekst == "+++" ) { do { std::getline( plik, tekst ); sto.push_back( tekst ); std::cout << "gettin the story!" << std::endl; } while( tekst != "---" ); } else if( tekst == "---" ) { std::getline( plik, tekst ); opt_o = tekst; std::getline( plik, tekst ); opt_t = tekst; } else if( tekst == "#" ) { do { std::getline( plik, tekst ); result_o.push_back( tekst ); } while( tekst != "##" ); } else if( tekst == "##" ) { do { std::getline( plik, tekst ); result_t.push_back( tekst ); } while( tekst != stopper ); } } } plik.close();
|
|
pekfos |
» 2018-08-08 16:13:20 Jakbyś wiedział, że jest coś takiego jak debugger, to byś zlokalizował problem szybciej niż ci zajęło wklejenie tu kodu. while( tekst != stopper ) { std::getline( plik, tekst ); if( tekst == "+++" ) { do { std::getline( plik, tekst ); sto.push_back( tekst ); std::cout << "gettin the story!" << std::endl; } while( tekst != "---" ); } else if( tekst == "---" )
Prześledzenie tego w debuggerze to max 2 sekundy. |
|
Wolfff Temat założony przez niniejszego użytkownika |
» 2018-08-08 16:36:23 Nie potrafię jeszcze dobrze używać debuggera, nigdy też nie potrzebowałem. Dzięki za pomoc ale nie rozumiem Twojego podejścia z tą pasywną agresją a potem i tak pomocą. |
|
mateczek |
» 2018-08-08 16:54:07 wpisz w google lub w youtube Twoje środowisko programistyczne + debuger najczęściej to jest ikonka robaka w IDE |
|
Wolfff Temat założony przez niniejszego użytkownika |
» 2018-08-08 17:53:29 Dzięki, poduczę się |
|
« 1 » |