C++ porównanie dwóch zmiennych typu string
Ostatnio zmodyfikowano 2014-09-19 05:27
Kefirek Temat założony przez niniejszego użytkownika |
C++ porównanie dwóch zmiennych typu string » 2014-09-17 19:43:56 Witam Fragment kodu: int i = 0;
string klientBaza; ifstream Klienci1; Klienci1.open( path.c_str() ); if( Klienci1.is_open() ) while( !( Klienci1.eof() ) ) { getline( cin, klientBaza ); if( klientBaza.compare( edtNazwa->Text.c_str() ) == 0 ) { ShowMessage( "Ten klient jest już w bazie. Wprowadź nowego lub wyjdź!!!" ); break; } else Klient->nazwaKlient = edtNazwa->Text; i++; } else ShowMessage( "Błąd otwarcia pliku!!!." );
Label8->Caption = IntToStr( i ); Klienci1.close();
Powyższy fragment kodu powoduje,że program zamiera tak jakby pętla while nie mogła się skończyć, a w pliku z którego sczytuje linie znajduje się kilkanaście lini tekstu. Po pobraniu z pliku stringa do zmiennej klientbaza i wpisaniu do kontrolki edit stringa(edtNazwa->Text) oba stringi są porównywane. Niestety gdzieś jest błąd, którego nie mogę wyłowić Pozdrawiam |
|
Jacob99 |
» 2014-09-17 19:46:07 Może będziesz tak łaskawy i pokażesz cały kod dotyczący błędu? |
|
Monika90 |
» 2014-09-17 20:13:47 getline( cin, klientBaza );
to próbuje wczytywać z cin a nie z pliku |
|
Kefirek Temat założony przez niniejszego użytkownika |
» 2014-09-17 20:14:46 Program się kompiluje i startuje normalnie z ty że po wpisaniu stringa do edtNazwa i rozpoczęcia się funkcji z powyżej podanym kodzie program zamiera nie reaguje. Cały kod przedstawiłem. Pozdrawiam |
|
Kefirek Temat założony przez niniejszego użytkownika |
» 2014-09-17 20:17:05 No właśnie wiedziałem, że gdzieś robię prosty błąd - moje przeoczenie - Dzięki Monika Pozdrawiam |
|
Monika90 |
» 2014-09-17 20:26:59 I po raz chyba 10 muszę napisać, że to nie jest dobry sposób wczytywania linii tekstu z pliku: while( !plik.eof() ) { getline( plik, linia ); }
to się robi tak while( getline( plik, linia ) ) { }
A przy okazji, jakiej wersji Borland C++ Builder używasz? |
|
Kefirek Temat założony przez niniejszego użytkownika |
» 2014-09-18 18:21:18 Sorry, Monika że tak późno odpowiadam: Dlaczego to nie jest dobry sposób odczytywania lini z pliku - chodzi o warunek w pętli? Używam Builder 6 wersja enterprise Pozdrawiam |
|
Monika90 |
» 2014-09-19 00:12:22 Podczas odczytu może się zdarzyć błąd, np. ktoś odłączy dysk sieciowy, wtedy koniec pliku nigdy nie będzie osiągnięty, twoja pętla będzie się wykonywać w nieskończoność i program się zawiesi. To jest mało prawdopodobne zdarzenie, ale nawet gdy do niego nie dojdzie i wczytywanie szczęśliwe dojdzie do końca pliku, to i tak nie jest dobrze, bo Twoja pętla może się wykonać jeszcze jeden raz, tak jakby na końcu pliku była dodatkowa pusta linia. U Ciebie to pewnie nie będzie miało znaczenia, ale w innych sytuacjach może być problemem. |
|
« 1 » 2 |