Drobny problem z funkcją zwracającą string
Ostatnio zmodyfikowano 2014-07-11 17:08
Totalq Temat założony przez niniejszego użytkownika |
Drobny problem z funkcją zwracającą string » 2014-07-11 17:08:58 Program ma sprawdzić, czy podana nazwa pliku przez użytkownika ma rozszerzenie .txt, jeśli nie to ma je dopisać. Chciałem jednak, żeby było ambitnie, więc funkcja w zamyśle sprawdza, czy przypadkiem ".txt" nie występuje po prostu w nazwie ot tak, nie jako rozszerzenie, lecz jako jakiś tam substring (pomijam poprawność takiego nazewnictwa). Adekwatnie do sytuacji dopisuje rozszerzenie .txt i zwraca string. Wprawdzie kod wymaga gruntownej przebudowy, żeby rzeczywiści wyczerpywal wszystkie możliwe przypadki, ale bardziej chodzi mi o niepoprawność funkcji while. Generalnie, całość można, by rozwikłać używając find_last_of, ale ten kod również powinien działać, a nie bardzo chce :/ Oto kod funkcji: string add_ext( string & file_name ) { string::size_type position; position = file_name.find_last_of( ".txt" ); if( position != string::npos ) { return file_name; } else { while( 1 ) { static string::size_type position2 = 0; position2 = file_name.find( '.', position2 ); if( position2 != string::npos ) { if( file_name[ position2 + 1 ] != ' ' ) { file_name.erase( position2 ); file_name.append( ".txt" ); break; } else { position2 += 1; if( position2 >= file_name.length() ) { file_name.append( ".txt" ); break; } else continue; } } } return file_name; } }
EDIT: przez godzinę nie udało mi się znaleźć błędu, wystarczyło utworzyć temat i od razu wiem gdzie jest, a jest zaraz na początku. Za bardzo skupiłem się na samej pętli... Przepraszam za problem ;) |
|
« 1 » |