Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Biblioteka fstream, operacje na plikach.

Ostatnio zmodyfikowano 2014-05-09 20:35
Autor Wiadomość
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ć.
P-109507
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.
P-109512
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ć?
P-109514
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 :).
P-109517
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 :)
P-109519
Jacob99
» 2014-05-08 20:04:10
To w takim razie ja zrobiłbym to tak:
C/C++
#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
    {
        //in this place enter the numbers to file
    }
}

P.S. Skoro nie chcesz korzystać z WinAPI to nie podawaj linków do kursu WinAPI.
P-109522
alixir
» 2014-05-09 09:19:06
Albo napisz sobie funkcję sprawdzającą czy plik istnieje.

C/C++
bool file_exists( const std::string & fname ) {
    ifstream f( fname.c_str() );
    if( f.good() ) {
        f.close();
        return true;
    } else {
        f.close();
        return false;
    }
}
P-109545
maly
» 2014-05-09 09:44:37
@alixir można prościej.
C/C++
bool file_exists( const std::string & fname )
{
    return std::ifstream( fname.c_str() ).is_open();
}

//EDIT
Takie też działa ale niewiem dlaczego.
C/C++
bool file_exists( const std::string & fname )
{
    return std::ifstream( fname.c_str() );
}

P-109547
« 1 » 2
  Strona 1 z 2 Następna strona