Getline() wczytuje białe znaki na końcu linii.

0

Witam, mam problem z metodą getline(). Mianowicie przy wczytywaniu danych z pliku getline(plik,linia) wczytywane są białe znaki za jedynym wyrazem w linii i nie mogę później w warunku if'a tego wykorzystać (porównać z innym string'iem), ponieważ zawsze wychodzi false. Znacie rozwiązanie tego problemu ?

0

Em, usuń białe znaki znajdujące się na końcu i wtedy porównaj? Ewentualnie użyj find() na stringu.

0
IForgotMyPass napisał(a):

Em, usuń białe znaki znajdujące się na końcu i wtedy porównaj? Ewentualnie użyj find() na stringu.

Find będzie trochę nieoptymalny bo porównanie przestanie lecieć po stringu jak tylko napotka różne znaki, find przeleci przez całego stringa. Ewentualnie (nie wiem jak jest zaimplementowane) mogło by przestawać lecieć gdy wykryje, że to co chcemy znaleźć już się nie zmieści.

Usunięcie znaków z końca wygląda spoko (:

0

Wrzucam kod źródłowy żeby było wiadomo dokładnie o co mi chodzi - http://4programmers.net/Pastebin/4320 Wydaje mi się, że wczytuje spacje do końca linii i dlatego przy porównaniu zwraca fałsz, bo innych pomysłów nie mam. Dodatkowo jak zwracam zmienna"poprawna" i wypisuje bezpośrednio za nią wartość, to jest już ona w nowej linii, a nie używam endl itp.

0

No spoko, niech sobie leci. Dopóki nie okaże się to bottleneckiem, po wcześniejszym sprofilowaniu, to nie ma się co przejmować takimi pierdołami. Niemniej, jeśli masz taką obsesję, to:

bool isPrefix(const std::string& input, const std::string& prefix) {
    return !input.compare(0, prefix.length(), prefix);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1