Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » INI-Files

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
08.06.2004, 14:57 Uhr
~CFreak
Gast


Wie kann ich ein Ini-File initialisieren.
Und wie kann ich aus dem File rauslesen und reinschreiben?

Mein Lehrer weiss es auch nicht so genau.

Gruss
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.06.2004, 15:41 Uhr
Pablo
Supertux
(Operator)


fopen zum öffnen und schreiben, und fprintf und fscanf (fgets) zum Lesen und Schreiben
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.06.2004, 16:58 Uhr
virtual
Sexiest Bit alive
(Operator)



C++:
#include <fstream>
#include <map>
#include <string>
#include <iostream>


typedef std::map<std::string, std::string> string_map;
typedef std::map<std::string, string_map> ini_file;


ini_file read_inifile(const char* filename)
{
    std::ifstream in(filename);
    ini_file file;
    string_map entries;
    std::string section_name;
    std::string line;

    while(std::getline(in, line))
    {
        if (line.length()==0) continue; // leerzeile
        if (line[0]=='#' || line[0]==';') continue; // Skip comments
        if (line[0]=='[' && line[line.length()-1]==']') // Section start
        {
            if (section_name.length()>0)
            {
                file.insert(std::make_pair(section_name, entries));
                entries.clear();
            }
            section_name = line.substr(1, line.length()-2);
        }else // ggf. Setting
        {
            std::string::size_type pos = line.find_first_of('=');
            if (std::string::npos == pos) continue; // Kein = Zeichen in Zeile
            std::string key = line.substr(0, pos);
            std::string value = line.substr(pos+1);
            entries.insert(std::make_pair(key, value));
        }
    }
    if (section_name.length()>0)
    {  
        file.insert(std::make_pair(section_name, entries));
    }  

    return file;
}


int main()
{
    ini_file file = read_inifile("some.ini.file");

    for(ini_file::const_iterator s=file.begin(); s!=file.end(); ++s)
    {
        std::cout<<"Abschnitt \""<<s->first<<"\":"<<std::endl;
        for(string_map::const_iterator e=s->second.begin(); e!=s->second.end(); ++e)
        {
            std::cout<<"\tEintrag \""<<e->first<<"\" hat den Wert \""<<e->second<<"\"."<<std::endl;
        }
    }
}      


Kann man als Grundlage eines schlechten C++ Programms dazu nehmen. Ein gutes würde das alles explizit in Klassen packen und außerdem so sachen wie Whitespaces berücksichtigen. Soll halt nur den Umgang mit Streams zeigen.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.06.2004, 18:07 Uhr
0xdeadbeef
Gott
(Operator)


http://sourceforge.net/projects/libconfig/

Ist KDE nachempfunden, und die benutzen ja das INI-Format.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
08.06.2004, 19:20 Uhr
mike
Pinguinhüpfer
(Operator)


Das ist ja nicht schlecht. Gibts sowas für C auch?
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
09.06.2004, 14:23 Uhr
RedEagle



Auf meiner HP (www.redeagle-software.de.vu) ist unter "code" ein beispiel zum lesen und schreiben einer ini-datei (leicht ferständlich aber in c++ )
--
MFG RedEagle

Dieser Post wurde am 09.06.2004 um 14:23 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: