[C++] Pliki tekstowe

strumien nie jest pusty czas to zmiennaa int zawierajaca jakas liczbe

Na tym listingu który podałeś zmienna czas to obiekt klasy stringstream, więc jak mamy interpretować twoją odpowiedź? Pamiętaj, zawsze do problemu z kodem dodawaj sam _KOD_ bo mało kto ma czarodziejską kulę do wróżenia gdzie w twoim kodzie zrobiłeś błąd, jeśli nie pokazujesz tego kodu.

// edit: Zresztą warto znać zasadę DRY w programowaniu, tak więc żebym się nie powtarzał, najpierw przeczytaj rady które napisał forumowicz Ryan: viewtopic.php?f=23&t=152275 to pozwoli sprawniej pomóc Ci z twoimi problemami.

Chce napisać takie coś, że jeśli niema pliku to go tworzy i wypełnia 5 linijek zerami i potem to wczytuje do tablicy, a jeśli plik istnieje od razu wczytuje.

Mam takie coś

int z;

string rekord[5];

int rekordx[5];




void wyniki()

{

fstream rekordy;

rekordy.open("rekordy.txt");


if (!rekordy)

{

        rekordy.close();

        fstream rekordy("rekordy.txt", ios::out);

        for (int j=1; j<=5; j++)

        {

                rekordy<<"0\n";

        }

        rekordy.close();

        rekordy.open("rekordy.txt", ios::in);

}


k=0;

while(getline(rekordy, rekord[k]))

{

        k++;

}


for (int j=0;j<=4; j++)

{

        stringstream z(rekord[j]);

        z>>rekordx[j];

}

ShowMessage(rekordx[1]);

ShowMessage(rekord[1].c_str());

}

I mam taki problem ze jeśli plik istnieje to jest ok, jeśli go niema to go tworzy i wypełnia zerami ale juz nie wczytuje prawidłowo

Przyłączam się do opinii nr47 , nie czytasz dokumentacji. Będziesz się pytał przy każdym kroku zamiast trochę pomyśleć? Programowanie na tym nie polega… Hint co do problemów z konwersją: funkcja klasy AnsiString co się zowie c_str() (drugi problem) i odpowiednio zabezpieczona metoda ToInt()/ToDouble() tej samej klasy (problem pierwszy).

Moze ktos mi powiedziec gdzie tu jest blad?

void wyniki()

{

fstream rekordy;

rekordy.open("rekordy.txt");


if (!rekordy)

{

        rekordy.close();

        rekordy.open("rekordy.txt", ios::out);

        for (int j=1; j<=5; j++)

        {

                rekordy<<"0\n";

        }

        rekordy.close();

        rekordy.open("rekordy.txt", ios::in);

}

...

}

Program sie kompiluje ale gdy pliku niema tworzy go ale niewypenia zerami

Jak na mój gust rezultat pierwszego if-a jest pewnie tożsamy true, bo niby czemu miałby być false? Domyślna wartość dla trybu otwarcia w procedurze open jest “ios_base::in | ios_base::out” (http://www.cplusplus.com/reference/iost … /open.html), więc nie rozumiem czemu tu się dziwić… Tak trudno to sprawdzić? Jesteś leniwy. Poeksperymentuj trochę z pierwszyą procedurą open przy włączonym debuggerze, to się dowiesz.

Powinni wprowadzić opłaty za posty pisane z powodu lenistwa :]

Zaraz tam wszyscy wyzywają od lenistwa jak człowiek czegoś nierozumie.

Zrobiłem wszystko co chciałem

Ale nie używałem fstream, tylko ifstream/ofstream i do wszystkiego inne zmienne.

PS

Wesołych świąt

Sebicom, fstream ogarnia zarówno ifstream jak i ofstream :slight_smile:

Moje zgryźliwe uwagi są tylko po, by zwrócić Twoją uwagę że poziom pytań które zadajesz jest trochę za niski. Zwróć uwagę że przynajmniej twoje ostatnie pytanie można było zweryfikować metodą prób i błędów oraz zaglądnięciem do jakiejkolwiek książki/strony www celem sprawdzenia jakie są domyślne parametry funkcji open (ja zajrzałem specjalnie dla Ciebie, bo ich nie pamiętam!). Na tym to polega, trzeba popróbować samemu - tego nie da się wkuć, nauczyć na pamięć, trzeba ćwiczyć. Im więcej popróbujesz, tym łatwiej będzie Ci reagować na podobne błędy w przyszłości.

Powodzenia, Wesołych Świąt.