• 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++

VPS Starter Arubacloud
0 głosów
286 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,290 p.)
Robisz dokładnie te same operacje w oboma plikami. Czy dostajesz 2 komunikaty?
1
komentarz 20 sierpnia 2022 przez adrian17 Ekspert (344,100 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,780 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,780 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ź 270 wizyt
pytanie zadane 25 sierpnia 2021 w C i C++ przez magda_19 Gaduła (3,080 p.)
0 głosów
1 odpowiedź 833 wizyt
pytanie zadane 8 stycznia 2017 w C i C++ przez Gambr Dyskutant (7,530 p.)
0 głosów
1 odpowiedź 959 wizyt
pytanie zadane 12 listopada 2020 w C i C++ przez Bartek030 Obywatel (1,460 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...