Biblioteka fstream, operacje na plikach.
Ostatnio zmodyfikowano 2014-05-09 20:35
fabianbanucha Temat założony przez niniejszego użytkownika |
Biblioteka fstream, operacje na plikach. » 2014-05-08 18:39:26 Witam wszystkich bardzo serdecznie na forum. Potrzebuję pomocy, a mianowicie jak sprawdzić czy plik o wczytanej przez użytkownika nazwie istnieje już w folderze programu. Piszę program używając funkcji, która generuje jakieś liczby i zapisuje do pliku (o nazwie podanej przez użytkownika), no i chciałem zrobić zabezpieczenie polegające na tym, że jeżeli wpiszę nazwę pliku, który już istnieje to żeby zwracało mi komunikat o błędzie i żeby ponownie wpisać inną nazwę pliku. Znalazłem na forum to http://cpp0x.pl/kursy/Kurs-WinAPI-C++/Podstawy/Pliki/180 aczkolwiek nie bardzo pojmuję jak mam to zrobić. |
|
Jacob99 |
» 2014-05-08 19:01:18 Masz tam w tabeli taki atrybut: CREATE_NEW - Tworzy nowy plik, generuje błąd jeśli plik o podanej nazwie już istnieje. więc go wykorzystaj. |
|
fabianbanucha Temat założony przez niniejszego użytkownika |
» 2014-05-08 19:05:34 A czy mógłbyś mi wyjaśnić jak tego użyć? Czy trzeba jakieś biblioteki bądź klasy dokładać? |
|
Jacob99 |
» 2014-05-08 19:24:18 Chłopie masz dokładnie napisane, że jest to argument funkcji CreateFile z WinAPI. Nie trzeba nic dołączać. Po prostu musisz użyć tej funkcji do stworzenia pliku. Jeśli taki plik juz istnieje to zwróci 0 proste :). |
|
fabianbanucha Temat założony przez niniejszego użytkownika |
» 2014-05-08 19:39:26 Tylko, że ja to robię w zwykłym C++ żadne WinAPI nie używam tej biblioteki :) |
|
Jacob99 |
» 2014-05-08 20:04:10 To w takim razie ja zrobiłbym to tak: #include <iostream> #include <fstream> #include <string> using namespace std;
int main() { string file_name; cout << "Please write file name and press enter: "; getline( cin, file_name ); fstream strum( file_name.c_str(), ios::in ); if( strum.fail() ) { cout << "Error: cannot open file" << endl; } else { } } P.S. Skoro nie chcesz korzystać z WinAPI to nie podawaj linków do kursu WinAPI. |
|
alixir |
» 2014-05-09 09:19:06 Albo napisz sobie funkcję sprawdzającą czy plik istnieje. bool file_exists( const std::string & fname ) { ifstream f( fname.c_str() ); if( f.good() ) { f.close(); return true; } else { f.close(); return false; } } |
|
maly |
» 2014-05-09 09:44:37 @alixir można prościej. bool file_exists( const std::string & fname ) { return std::ifstream( fname.c_str() ).is_open(); } //EDIT Takie też działa ale niewiem dlaczego. bool file_exists( const std::string & fname ) { return std::ifstream( fname.c_str() ); } |
|
« 1 » 2 |