• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

własna nazwa pliku w c++

Object Storage Arubacloud
0 głosów
299 wizyt
pytanie zadane 20 sierpnia 2022 w C i C++ przez ivankov Nowicjusz (140 p.)

Piszę program pracujący na dwóch plikach tekstowych, gdzie nazwa pliku wejściowego i wyjściowego jest podawana przez użytkownika. Według wszystkiego co widziałem na tutorialach, jeśli nawet plik o podanej nazwie nie istnieje na dysku, to powinien się utworzyć w katalogu z kodem - u mnie natomiast to wygląda w taki sposób, że jeśli podaję nazwę (w tym wypadku pliku wyjsciowego) pliku którego jeszcze nie ma, to wyrzuca opcję ifa sprawdzającego poprawność mówiącą o błędzie otwarcia pliku wyjsciowego. Wie ktoś gdzie jest błąd?

int main()
{
    string input, output;
    cout << "\nPodaj wejsciowy plik txt: ";
    cin >> input;
    cout << "\nPodaj wyjsciowy plik txt: ";
    cin >> output;
    fstream in(input);    //plik wejsciowy
    fstream out(output); //plik wyjsciowy

   if (!in.good())
        cout << "Blad otwarcia pliku wejsciowego!";
   if (!out.good())
        cout << "Blad otwarcia pliku wyjsciowego!";
   else if (in.good() && out.good())
    {
        //tu praca na plikach
    }
    in.close();
    out.close();
    return 0;
}

 

komentarz 20 sierpnia 2022 przez Oscar Nałogowiec (29,320 p.)
Robisz dokładnie te same operacje w oboma plikami. Czy dostajesz 2 komunikaty?
1
komentarz 20 sierpnia 2022 przez adrian17 Ekspert (344,860 p.)
Powinieneś użyć ifstream/ofstream zamiast gołego "fstream". (analogicznie jak używasz cin/cout do wejścia/wyjścia)
komentarz 21 sierpnia 2022 przez ivankov Nowicjusz (140 p.)

@Oscar,  nie, tylko dla wyjściowego który w chwili uruchamiania nie istnieje na dysku a powinien się utworzyć 

1 odpowiedź

+1 głos
odpowiedź 20 sierpnia 2022 przez tangarr Mędrzec (154,860 p.)

Jaki jest domyślny sposób otwarcie pliku przez klasę fstream?

explicit fstream (const char* filename,
                  ios_base::openmode mode = ios_base::in | ios_base::out);

Do odczytu i do zapisu. Ten tryb wymaga, żeby plik istniał. Jeżeli chcesz utworzyć nowy plik użyj tylko trybu do zapisu (ios_base::out).

komentarz 21 sierpnia 2022 przez ivankov Nowicjusz (140 p.)
ale ja zarówno zapisuję jak i odczytuję z tego pliku, mogę potem zmienić jego tryb otwarcia?
1
komentarz 21 sierpnia 2022 przez tangarr Mędrzec (154,860 p.)

Możesz najpierw otworzyć plik w trybie do zapisu aby upewnić się, że plik zostanie utworzony a potem otworzyć go jeszcze raz w trybie do odczytu i zapisu.

    fstream out(output, ios_base::out | ios_base::app);
    if (!out.good()) {
        cout << "Blad otwarcia pliku wyjsciowego!";
        return 1;
    }
    out.close();
    
    out.open(output);
    if (!out.good()) {
        cout << "Blad otwarcia pliku wyjsciowego!";
        return 1;
    }

 

Podobne pytania

+1 głos
1 odpowiedź 277 wizyt
pytanie zadane 25 sierpnia 2021 w C i C++ przez magda_19 Gaduła (3,080 p.)
0 głosów
1 odpowiedź 846 wizyt
pytanie zadane 8 stycznia 2017 w C i C++ przez Gambr Dyskutant (7,530 p.)
0 głosów
1 odpowiedź 999 wizyt
pytanie zadane 12 listopada 2020 w C i C++ przez Bartek030 Obywatel (1,460 p.)

92,583 zapytań

141,434 odpowiedzi

319,669 komentarzy

61,966 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...