c++ .Dane z pliku się nie odczytują

0
#include <iostream>
#include <fstream>
#include <windows.h>
using namespace std;

void dziennik()
{
    system("cls");
    cout << "\\\\\\\\dziennik////\n";
    string dziennik;
    ifstream sdziennik("x.txt");
    if (sdziennik.is_open()) {
        while (sdziennik.good()) {
            getline(sdziennik, dziennik);
            cout << dziennik << endl;
            cout << endl;
        }
        sdziennik.close();
    }
}

void stoper()
{
    system("cls");
    system("color F3");
    int s = 0, m = 0, h = 0;

    while (true) {
        cout << "Czas:";
        cout << h / 3600 << ":" << m / 60 << ":" << s;
        if (s == 59) {
            s = -1;
        }
        if (m == 3599) {
            system("cls");
            for (int i = 15; i >= 0; --i) {
                cout << endl
                     << "MINELA 1 h !!! Pozosta³o : " << i << " minut";
                Sleep(60000);
                system("cls");
            }
            m = -1;
        }
        s++;
        m++;
        h++;
        Sleep(1000);
        system("cls");
    }
}

int main()
{
    system("color 02");
    short wybor;
    do {
        cout << "1.Dziennik" << endl;
        cout << "2.Stoper" << endl;
        cout << "3.Wyjscie" << endl;
        cout << "Wybor:";

        while (!(cin >> wybor)) {
            cout << "Fatal error:Podaj jeszcze raz:";
            cin.clear();
            cin.sync();
        }

        switch (wybor) {
        case 1: {

            dziennik();
            break;
        }
        case 2: {
            stoper();
            break;
        }
        default:
            system("cls");
            cout << "Zly wybor:\n\n";
            break;
        }

    } while (wybor != 3);

    return 0;
} 

chodzi mi o funkcje dziennik .otóż w folderze programu c++ mam utworzony plik x.txt i wpisane coś .program normalne odczytywał to co tam jest wpisane .ale wyłączyłem i włączyłem jeszce raz program i nie wczytuje nic-WHY?

4

Najpierw:

  1. Fatalne kodowanie masz, popraw jeśli sam nie umiesz: http://format.krzaq.cc
  2. wyświetlanie można spokojnie zrobić za pomocą
ifstream sdziennik("x.txt");
while(getline(sdziennik, dziennik)){
	// stuff
}
  1. zbędnie wołasz .close() (C++ ma RAII nie bez powodu)

Jeśli chodzi o Twój problem to strzelam, że jego powodem jest jedno z następujących

  1. odpalasz program w innym katalogu wykonania (to nie jest w żaden sposób powiązane z katalogiem, w którym jest exec)
  2. masz włączone ukrywanie rozszerzeń i dziarsko edytujesz sobie x.txt.txt, który widzisz w eksploratorze jako x.txt
1

Do instrukcji warunkowej sprawdzającej dodaj

if (sdziennik.is_open()) {
    // odczytanie pliku
}
else {
    std::cerr << "plik nie is_open()\n";
    // tutaj działanie na wypadek problemów z plikiem
} 

Zwykle używa się takiej implementacji: "wykonaj coś na wypadek braku dostępu do pliku".

1

Znak \ jest znakiem specjalnym i żeby w łańcuchu był interpretowany jak \ trzeb poprzedzić go drugim backslashem \\.

Każdy szanujący się programista wyłącza ukrywanie popularnych rozszerzeń,
bo jest to źródło potencjalnych kłopotów.

0

.okok już rozumiem o co chodzi z tym \

1 użytkowników online, w tym zalogowanych: 0, gości: 1