[C++] Pliki tekstowe

Witam

Potrzebuje poleceń do zapisu i odczytu plików testowych, nazwy potrzebnych bibliotek i najlepiej wszystko co z tym związane.

Potrzebuje to do obiektowego c++.

Szczególnie chodzi mi o wczytanie pliku, podstawienie pod tablice kolejnych jego linijek i nadpisanie go.

Szukałem troche tego ale coś mi niewychodzi

Hmmm

http://www.google.pl/search?client=fire … j+w+Google

fstream xxx(“c:\xxx.txt”); - otwarcie pliku do odczytu/zapisu

i teraz jak mam tam cos zapisac wczytac?

xxx=“1”; niedziala

xxx << "1";

http://www.cplusplus.com/reference/iostream/fstream/

Wiem ze jest jakieś polecenie getline do wczytywania linii

Chciałbym to zastosować do podstawiania kolejnych linii z pliku pod tablice i na odwrót z tablicy zapisywanie do pliku

Co tu jest zle?

int k;

String rekordzista[6];



void wyniki()

{


ifstream in("rekordzisci.txt");


k=1;


while(getline(in, rekordzista[k]))

{

        k++;

}

}

Napisałeś String z duże litery.

Jeżeli dodałeś odpowiednie pliki nagłówkowe i deklaracje:

using namespace std;

to powinno działać.

Edit: jeszcze jedno, dlaczego zaczynasz od k=1? W c/c++ takie rzeczy zawsze numeruje się od 0 do rozmiar -1.

Zaczynam od 1 poniewaz pod 0 mam cos innego

Jak zamknac ifstream in, zeby moc wczytac dane z drugiego pliku?

Odpowiedzi na większość pytań na temat C++ znajdziesz tutaj: http://www.cppreference.com/wiki/

Metoda close.

jakby infile.close(); dzialalo to bym niepisal

W takim razie napisz co masz, to się zobaczy czemu nie działa u Ciebie, bo do zamykania uchwytu do pliku służy właśnie metoda close.

ifstream in("rekordy.txt");

k=1;

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

{

        k++;

}

infile.close();

wyskakuje blad ze niewie co to jest infile

No najpierw definiujesz obiekt klasy ifstream o nazwie in, więc pewnie chodziło Ci o wywołanie metody close na nim, to jest in.close(), czyż nie?

No dziala tylko ciagle wyskakuje multiple declaration for in przy

ifstream in("rekordy.txt", ifstream::in);

k=1;

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

{

        k++;

}

in.close();





ifstream in("rekordzisci.txt");

k=1;

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

{

        k++;

}

in.close();

Bo dwukrotnie deklarujesz to się nie dziw. Chyba niezbyt dobrze znasz C++ / klasę fstream, i nie za bardzo potrafisz korzystać z dokumentacji. Chodzi Ci o metodę open - http://www.cppreference.com/wiki/io/open

teraz mam troblem z zamiana

integera na string /string na integer( zeby moc zapisac w piku zmienne typu int)

i ansistring na stringa (zeby dzialalo rekordzista[0]=InputBox(“Rekordy”,“Podaj swoj nick”,""); gdzie tablica jest string a inputbox ansistring)

Nie niejesteś za wygodny? Co do zamiany int na string/string na int można użyć np:

http://www.cplusplus.com/reference/iost … ingstream/

I zamieniać poprzez strumienie.

A co do zamiany napisów w stylu C na string to:

http://www.cplusplus.com/reference/string/string/

i metoda insert.

Wiesz ta strona dużo mi nie mówi … w tym temacie ona padla juz 3 razy

tzn?

Co znaczy padła? Strona jest dokumentajcją biblioteki języka wraz z przykładami.

Zamienić przez strumienie można tak(drobny przykład):

#include 

#include 

int main()

{

	std::stringstream ss (std::stringstream::in | std::stringstream::out);

	ss<<"321";

	int i;

	ss>>i;

	std::cout << i;

}

O czywiście po każdej takiej próbie konwersji nalęzy sprawdzić czy się udało metoda fail:

http://www.cplusplus.com/reference/iost … /fail.html

Mam taki problem ze nic sie niewyswietla w showmessage

stringstream czas (stringstream::out | stringstream::in);

czas >> rekord[0];

ShowMessage(AnsiString(rekord[0].c_str()));

Na podstawie tego co podałeś, to strumień jest pusty. Tworzysz strumień i od razu z niego wczytujesz dane (których w nim nie ma, bo skąd?). Czytałeś DOKUMENTACJĘ? Proszę przykład z niej:

stringstream s1;

    int i = 22;

    s1 << "Hello " << i << endl;

    string s2 = s1.str();

    cout << s2;

Ta strona pewnie też już padała: http://www.cppreference.com/wiki/io/sstream/start

Podpowiedź: jeśli ktoś podaje stronę to zazwyczaj dlatego, że tam jest rozwiązanie twojego problemu