sebikom
(Sebikom)
21 Grudzień 2008 12:42
#1
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
sebikom
(Sebikom)
21 Grudzień 2008 12:57
#3
fstream xxx(“c:\xxx.txt”); - otwarcie pliku do odczytu/zapisu
i teraz jak mam tam cos zapisac wczytac?
xxx=“1”; niedziala
Fiolek
(Fiołek)
21 Grudzień 2008 13:11
#4
sebikom
(Sebikom)
21 Grudzień 2008 17:33
#5
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++;
}
}
Rafal_F
(Rafal M F)
21 Grudzień 2008 18:00
#6
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.
sebikom
(Sebikom)
21 Grudzień 2008 18:32
#7
Zaczynam od 1 poniewaz pod 0 mam cos innego
Jak zamknac ifstream in, zeby moc wczytac dane z drugiego pliku?
nr47
(Sawyer47)
21 Grudzień 2008 18:43
#8
Odpowiedzi na większość pytań na temat C++ znajdziesz tutaj: http://www.cppreference.com/wiki/
Metoda close.
sebikom
(Sebikom)
21 Grudzień 2008 19:43
#9
jakby infile.close(); dzialalo to bym niepisal
nr47
(Sawyer47)
21 Grudzień 2008 19:59
#10
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.
sebikom
(Sebikom)
21 Grudzień 2008 20:02
#11
ifstream in("rekordy.txt");
k=1;
while(getline(in, rekord[k]))
{
k++;
}
infile.close();
wyskakuje blad ze niewie co to jest infile
nr47
(Sawyer47)
21 Grudzień 2008 20:08
#12
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?
sebikom
(Sebikom)
21 Grudzień 2008 20:11
#13
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();
nr47
(Sawyer47)
21 Grudzień 2008 20:27
#14
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
sebikom
(Sebikom)
21 Grudzień 2008 22:11
#15
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)
Rafal_F
(Rafal M F)
21 Grudzień 2008 23:01
#16
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.
sebikom
(Sebikom)
21 Grudzień 2008 23:10
#17
Wiesz ta strona dużo mi nie mówi … w tym temacie ona padla juz 3 razy
tzn?
Rafal_F
(Rafal M F)
21 Grudzień 2008 23:16
#18
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
sebikom
(Sebikom)
21 Grudzień 2008 23:36
#19
Mam taki problem ze nic sie niewyswietla w showmessage
stringstream czas (stringstream::out | stringstream::in);
czas >> rekord[0];
ShowMessage(AnsiString(rekord[0].c_str()));
nr47
(Sawyer47)
22 Grudzień 2008 10:16
#20
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