Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Odczytywanie danych z pliku (ale troche inne)

Ostatnio zmodyfikowano 2009-02-28 14:28
Autor Wiadomość
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ź.
P-4538
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.
P-4539
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:
C/C++
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
P-4540
lynx
» 2009-02-28 13:29:55
A zincludowałeś bibliotekę fstream? I na początku zaraz po include'ach dopisz:
C/C++
using namespace std;
/edit1:
Funkcja getline odczytuje 1 wiersz z pliku, ponowne jej użycie powoduje odczytanie następnej linijki w pliku.
P-4542
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.
P-4543
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.
P-4544
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
P-4549
lynx
» 2009-02-28 14:11:41
Nie ma tak dobrze. :)
http://archiwum.ddt.pl/?TextId=6380 do wypowiedzi pekfos'a, pownno Ci to pomóc.
P-4550
« 1 » 2
  Strona 1 z 2 Następna strona