Strona 1 z 1

C++, jak najłatwiej odczytać plik konfiguracyjny?

: 10 grudnia 2007, 23:06
autor: zbik
Chciałbym napisać program który czyta taki normalny, linuksowy plik konfiguracyjny:

Kod: Zaznacz cały

# jakiś komentarz
zmienna1 = 7
zmienna2 = /var/lib/cośtam/
Czy jest jakaś gotowa funkcja/biblioteka, jakiś łatwy sposób żebym mógł odczytać taki plik *.conf i mieć w programie ustawione zmienne z tego pliku, czy muszę sam pisać funkcje która będzie czytać linijka po linijce, ignorować komentarze i wczytywać jakoś te zmienne?
Takie pliki konfiguracyjne mają ujednoliconą składnię i wiele programów ich używa, wydaje mi się że powinny być jakieś gotowe narzędzia ułatwiające używanie tych plików w programach.

: 11 grudnia 2007, 06:50
autor: Kaka'
Ostatnio sam zainteresowałem się odczytywaniem linijek z pliku. Jak na razie korzystam z fstream (poczytaj na cplusplus.com), choć pewnie jest prostszy sposób...


Pozdrawiam.

: 11 grudnia 2007, 12:53
autor: Immortal
Napisać takie odczytywanie to nie jest specjalny problem. Dobrze jest użyć jakiegoś strumiania. Może być jak kolega Kaka' napisał fstream/istream. Jeśli będziesz miał plik zapisany tak jak napisałeś czyli:

Kod: Zaznacz cały

zmienna1 = coś_tam
to masz problem z głowy. Jeśli zaś

Kod: Zaznacz cały

zmienna1=coś_tam
To już musisz dołożyć jeszcze jedną pentelkę ;) Jeśli chcesz czytać od słowa do słowa to używasz zwykłego operatora >>. On czyta do białego znaku. Jeśli zaś chcesz czytać po znaku to możesz użyć funkcji get() (poczytaj np o typie std::istream). O ile pamiętam jest tam jeszcze funkcja getline() która w połączeniu ze std::string pozwoli Ci to napisać bardzo szybko i sprawnie ;)

: 08 stycznia 2008, 15:54
autor: db
Kaka' pisze:Ostatnio sam zainteresowałem się odczytywaniem linijek z pliku. Jak na razie korzystam z fstream (poczytaj na cplusplus.com), choć pewnie jest prostszy sposób...
Co ma do tego fstream?

http://www.adp-gmbh.ch/cpp/config_file.html -- całkiem przyjemny przykład takiej klasy. Google-code, koders.com mają multum innych przykładów.

: 08 stycznia 2008, 18:07
autor: grzesiek
Kiedyś pamiętam pisałem coś takiego, wtedy szukałem czegoś takiego w GLib, jest tam jakiś perser ale jego działanie jest troszkie nakierowane np na gtk.rc, najlepiej samemu to napisac, być może teraz jest to juz bardziej rozwiniete.

tu masz coś takiego

http://library.gnome.org/devel/glib/uns ... arser.html

: 09 stycznia 2008, 11:45
autor: wojtekz_
Podejrzewam, że co drugi program w Debianie ma taką "bibliotekę". Jest to tak trywialne, że chyba nie warto specjalnie szukać, tylko sobie samemu napisać. Powinno zająć 15 minut ;-)

Pozdrawiam