Odczytywanie danych z pliku (ale troche inne)
Ostatnio zmodyfikowano 2009-02-28 14:28
Ju1ian Temat założony przez niniejszego użytkownika |
Odczytywanie danych z pliku (ale troche inne) » 2009-02-28 12:57:25 Witam! Postanowiłem umieścić dane potworów w plikach. Przykładowy plik mógłby wyglądać tak (troll.dat no albo txt, ini): sila = 50 obrona = 23 lvl = 22 itd.
Wiem jak odczytywać dane z pliku, ale nie wiem jak tak. Proszę o odpowiedź. |
|
DejaVu |
» 2009-02-28 13:10:28 1. Wczytujesz wiersz 2. Szukasz znaku = w wierszu 3. Tniesz łańcuch na 2 części: [li]to co przed znakiem =[/li] [li]to co po znaku =[/li] 4. Usuwasz spacje z przodu i z tyłu łańcuchów, które dostałeś po podzieleniu 5. Sprawdzasz if'em czy klucz (pierwsza wartość) pasuje np. do "bleble". 6. Jeśli if został spełniony z ptk 5. konwertujesz dane z tekstu np. na liczbę typu int odpowiednią funkcją (dotyczy drugiego łańcucha znaków). 7. Przekonwertowaną wartość zapisujesz np. do struktuury. |
|
Ju1ian Temat założony przez niniejszego użytkownika |
» 2009-02-28 13:23:51 Ok odpuszczę sobie z tymi == bo zupełnie nie wiem jak to zrobić. Tym normalnym sposobem: 50 23 24 Próbuję, ale nie wiem jak odczytać np 2 wiersz. A jak mam 1 wiersz w pliku i próbuję normalnie wczytać to się nie kompiluje. Dołączyłem bibliotekę fstream: fstream plik; plik.open( "data/troll.dat", ios::in ); if( plik.good() == true ) { getline( plik, troll.sila ); plik.close(); } log: Kompilator: Default compiler Building Makefile: "C:\Documents and Settings\Frankie\Pulpit\kod\Makefile.win" Wykonywanie make... make.exe -f "C:\Documents and Settings\Frankie\Pulpit\kod\Makefile.win" all g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"
main.cpp: In function `int _mangled_main()': main.cpp:356: error: `fstream' undeclared (first use this function) main.cpp:356: error: (Each undeclared identifier is reported only once for each function it appears in.) main.cpp:356: error: expected `;' before "plik" main.cpp:357: error: `plik' undeclared (first use this function)
main.cpp:357: error: `ios' has not been declared main.cpp:357: error: `in' undeclared (first use this function) main.cpp:360: error: `getline' undeclared (first use this function)
make.exe: *** [main.o] Error 1
Wykonanie zakończone
|
|
lynx |
» 2009-02-28 13:29:55 A zincludowałeś bibliotekę fstream? I na początku zaraz po include'ach dopisz: /edit1:Funkcja getline odczytuje 1 wiersz z pliku, ponowne jej użycie powoduje odczytanie następnej linijki w pliku. |
|
Ju1ian Temat założony przez niniejszego użytkownika |
» 2009-02-28 13:35:50 1. Tak mam. 2. Dzięki za podpowiedź 3. Dodałem i usunęło wszystkie błędy oprócz 1 ;/ 362 C:\Documents and Settings\Frankie\Pulpit\kod\main.cpp no matching function for call to `getline(std::fstream&, int&)'
O co chodzi?? Przecież poprawnie zapisałem. |
|
lynx |
» 2009-02-28 13:43:52 Źle używasz funkcji getline, a dokładnie 2 argument jest zły. Tam nie ma być liczba. Musisz to sobie wczytać do stringa, a dopiero później skonwenterować string na liczbę. (troll.sila)
/edit: Przeczytaj punkt 6 wypowiedzi Piotrka. |
|
Ju1ian Temat założony przez niniejszego użytkownika |
» 2009-02-28 14:05:45 Próbuje to skonwertować i przypisać o tak: nazwa_zmniennej_obiektu = (int) zmienna_wiersz_pliku i nic. Nie wiem w czym problem, nie kompiluje się, a wywala taki błąd 371 C:\Documents and Settings\Frankie\Pulpit\kod\main.cpp `struct std::string' used where a `int' was expected |
|
lynx |
» 2009-02-28 14:11:41 |
|
« 1 » 2 |