<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[wie am besten Einstellungen oder größere Datenmengen verwalten?]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>Gibt es eine empfohlene Struktur, um viele gruppierte Daten zu verwalten?<br />
Ich habe beispielsweise eine klassische Konfigurationsdatei (.ini), die ich beim Programmstart einlese:</p>
<pre><code>[Gruppe1]
Key_1 = Value_1
Key_2 = Value_2
Key_3 = Value_3

[Gruppe2]
Key_A = Value_A
Key_B = Value_B
Key_C = Value_C

[Gruppe3]
Key_X = Value_X
Key_Y = Value_Y
Key_Z = Value_Z

[...und viele mehr...]
</code></pre>
<p>Wie verwalte ich diese Daten am besten?</p>
<p>1. Möglichkeit: Ich verwende Klassen mit eingebetteten Objekten:</p>
<pre><code>class Gruppe1
{
public:
	Gruppe1(){};
	~Gruppe1(){};

	int getKey1() const
	{
		return m_key_1;
	}

	void setKey1(int value)
	{
		this-&gt;m_key_1 = value;
	}
	[...]

private:
	int m_key_1;
	int m_key_2;
	int m_key_3;
};

class MeineDaten
{
public:
	MeineDaten(){};
	~MeineDaten(){};

	Gruppe1 getGruppe1() const;
	void setGruppe1(Gruppe1 const &amp;gruppe1);
	[...]

private:
	Gruppe1 m_gruppe1;
	Gruppe2 m_gruppe2;
	Gruppe3 m_gruppe3;
};

void main()
{
	MeineDaten settings;

	// eine Info abrufen
	Gruppe1 gruppe1 = settings.getGruppe1();
	int meinWert = gruppe1.getKey1();

	// daten hineinschreiben
	gruppe1.setKey1(123);
	settings.setGruppe1(gruppe1);
}
</code></pre>
<p>Das die Namensgebung nicht optimal ist und die Variablen hier nicht initialisiert werden, ist mir bewusst.<br />
Diese Methode kommt mir sehr unübersichtlich und umständlich vor.</p>
<p>2. Möglichkeit: Verwendung von einzelnen Strukturen ohne getter und setter</p>
<pre><code>struct Gruppe1
{
	int key_1;
	int key_2;
	int key_3;
};

[...]

struct MeineDaten
{
	Gruppe1 gruppe1;
	Gruppe2 gruppe2;
	Gruppe3 gruppe3;
};

void main()
{
	MeineDaten settings;

	// eine Info abrufen
	int meinWert = settings.gruppe1.key_1;

	// daten hineinschreiben
	settings.gruppe1.key_1 = 123;
}
</code></pre>
<p>3. Möglichkeit: Definition einer einzigen Struktur ohne getter und setter</p>
<pre><code>struct MeineDaten
{
	struct
	{
		int key_1;
		int key_2;
		int key_3;
	}gruppe1;

	struct
	{
		int key_A;
		int key_B;
		int key_C;
	}gruppe2;

	struct
	{
		int key_X;
		int key_Y;
		int key_Z;
	}gruppe3;
};

void main()
{
	MeineDaten settings;

	// eine Info abrufen
	int meinWert = settings.gruppe1.key_1;

	// daten hineinschreiben
	settings.gruppe1.key_1 = 123;
}
</code></pre>
<p>Das geht definitiv am schnellsten, aber ist es auch ok so? Gibt es Ansätze die gundsätzlich besser dafür geeignet sind? Mir ist zumindest nichts anderes bekannt (nur sowas wie XML parser &amp; co.).<br />
Habt ihr Tipps für mich?</p>
<p>viele Grüße,<br />
SBond</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/338525/wie-am-besten-einstellungen-oder-größere-datenmengen-verwalten</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 11:59:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/338525.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 21 Jun 2016 15:50:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to wie am besten Einstellungen oder größere Datenmengen verwalten? on Tue, 21 Jun 2016 15:50:55 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>Gibt es eine empfohlene Struktur, um viele gruppierte Daten zu verwalten?<br />
Ich habe beispielsweise eine klassische Konfigurationsdatei (.ini), die ich beim Programmstart einlese:</p>
<pre><code>[Gruppe1]
Key_1 = Value_1
Key_2 = Value_2
Key_3 = Value_3

[Gruppe2]
Key_A = Value_A
Key_B = Value_B
Key_C = Value_C

[Gruppe3]
Key_X = Value_X
Key_Y = Value_Y
Key_Z = Value_Z

[...und viele mehr...]
</code></pre>
<p>Wie verwalte ich diese Daten am besten?</p>
<p>1. Möglichkeit: Ich verwende Klassen mit eingebetteten Objekten:</p>
<pre><code>class Gruppe1
{
public:
	Gruppe1(){};
	~Gruppe1(){};

	int getKey1() const
	{
		return m_key_1;
	}

	void setKey1(int value)
	{
		this-&gt;m_key_1 = value;
	}
	[...]

private:
	int m_key_1;
	int m_key_2;
	int m_key_3;
};

class MeineDaten
{
public:
	MeineDaten(){};
	~MeineDaten(){};

	Gruppe1 getGruppe1() const;
	void setGruppe1(Gruppe1 const &amp;gruppe1);
	[...]

private:
	Gruppe1 m_gruppe1;
	Gruppe2 m_gruppe2;
	Gruppe3 m_gruppe3;
};

void main()
{
	MeineDaten settings;

	// eine Info abrufen
	Gruppe1 gruppe1 = settings.getGruppe1();
	int meinWert = gruppe1.getKey1();

	// daten hineinschreiben
	gruppe1.setKey1(123);
	settings.setGruppe1(gruppe1);
}
</code></pre>
<p>Das die Namensgebung nicht optimal ist und die Variablen hier nicht initialisiert werden, ist mir bewusst.<br />
Diese Methode kommt mir sehr unübersichtlich und umständlich vor.</p>
<p>2. Möglichkeit: Verwendung von einzelnen Strukturen ohne getter und setter</p>
<pre><code>struct Gruppe1
{
	int key_1;
	int key_2;
	int key_3;
};

[...]

struct MeineDaten
{
	Gruppe1 gruppe1;
	Gruppe2 gruppe2;
	Gruppe3 gruppe3;
};

void main()
{
	MeineDaten settings;

	// eine Info abrufen
	int meinWert = settings.gruppe1.key_1;

	// daten hineinschreiben
	settings.gruppe1.key_1 = 123;
}
</code></pre>
<p>3. Möglichkeit: Definition einer einzigen Struktur ohne getter und setter</p>
<pre><code>struct MeineDaten
{
	struct
	{
		int key_1;
		int key_2;
		int key_3;
	}gruppe1;

	struct
	{
		int key_A;
		int key_B;
		int key_C;
	}gruppe2;

	struct
	{
		int key_X;
		int key_Y;
		int key_Z;
	}gruppe3;
};

void main()
{
	MeineDaten settings;

	// eine Info abrufen
	int meinWert = settings.gruppe1.key_1;

	// daten hineinschreiben
	settings.gruppe1.key_1 = 123;
}
</code></pre>
<p>Das geht definitiv am schnellsten, aber ist es auch ok so? Gibt es Ansätze die gundsätzlich besser dafür geeignet sind? Mir ist zumindest nichts anderes bekannt (nur sowas wie XML parser &amp; co.).<br />
Habt ihr Tipps für mich?</p>
<p>viele Grüße,<br />
SBond</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2499687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2499687</guid><dc:creator><![CDATA[SBond]]></dc:creator><pubDate>Tue, 21 Jun 2016 15:50:55 GMT</pubDate></item><item><title><![CDATA[Reply to wie am besten Einstellungen oder größere Datenmengen verwalten? on Tue, 21 Jun 2016 16:42:09 GMT]]></title><description><![CDATA[<p>Boost.PropertyTree</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2499690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2499690</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Tue, 21 Jun 2016 16:42:09 GMT</pubDate></item><item><title><![CDATA[Reply to wie am besten Einstellungen oder größere Datenmengen verwalten? on Tue, 21 Jun 2016 18:01:46 GMT]]></title><description><![CDATA[<p>wahrscheinlich komme ich um boost nicht herum, so oft wie ich darauf stoplere.</p>
<p>Ich schau mir das mal an <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2499692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2499692</guid><dc:creator><![CDATA[SBond]]></dc:creator><pubDate>Tue, 21 Jun 2016 18:01:46 GMT</pubDate></item><item><title><![CDATA[Reply to wie am besten Einstellungen oder größere Datenmengen verwalten? on Tue, 21 Jun 2016 20:01:03 GMT]]></title><description><![CDATA[<p><code>Boost.PropertyTree</code> ist ein generisches DOM-Format für Settings.</p>
<p>Und ich bin kein Fan davon Settings primär über ein generisches DOM-Format anzusprechen. Als Hilfe beim Einlesen bzw. Schreiben ist das OK, aber dort wo die Settings verwendet werden, sollten sie nicht in sowas stecken.</p>
<p>Die wichtigsten Gründe dagegen sind für mich:</p>
<ol>
<li>Ich will keine unnötige Dependency auf das DOM-Format im Interface</li>
<li>Generisches DOM-Format heisst normalerweise Zugriff auf die Werte per Name (String-Key), und das ist unübersichtlich, fehleranfällig und nicht refactoringfreundlich</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/2499699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2499699</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 21 Jun 2016 20:01:03 GMT</pubDate></item><item><title><![CDATA[Reply to wie am besten Einstellungen oder größere Datenmengen verwalten? on Tue, 21 Jun 2016 23:11:31 GMT]]></title><description><![CDATA[<p>Danke für die Info <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Ich habe es erstmal nach 'Möglichkeit 3' gelöst, da ich mich noch etwas gegen Boost wehre (ich versuche es lieber erstmal selber zu lösen, als Libs einzubinden).</p>
<p>Hier ein Beispiel für die .ini aus meinem ersten Post:</p>
<pre><code>struct MeineDaten
{
	MeineDaten:gruppe1(), gruppe2(), gruppe3() {}

    struct gruppe1
    {
		gruppe1():key_1(0), key_2(0), key_3(0) {}
        int key_1;
        int key_2;
        int key_3;
    }gruppe1;

    struct gruppe2
    {
		gruppe1():key_A(0), key_B(0), key_C(0) {}
        int key_A;
        int key_B;
        int key_C;
    }gruppe2;

    struct gruppe3
    {
		gruppe1():key_X(0), key_Y(0), key_Z(0) {}
        int key_X;
        int key_Y;
        int key_Z;
    }gruppe3;
};

void main()
{
    MeineDaten settings;

    // eine Info abrufen
    int meinWert = settings.gruppe1.key_1;

    // daten hineinschreiben
    settings.gruppe1.key_1 = 123;
}
</code></pre>
<p>Initialisierungslisten in structs sehen für mich noch etwas gewöhnungsbedürftig aus. Da ich aber auch std::string verwende, kann ich die Initialisierung nicht mit memset() machen. Für einfache ini-Dateien, sollte die Lösung ok sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2499704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2499704</guid><dc:creator><![CDATA[SBond]]></dc:creator><pubDate>Tue, 21 Jun 2016 23:11:31 GMT</pubDate></item><item><title><![CDATA[Reply to wie am besten Einstellungen oder größere Datenmengen verwalten? on Wed, 22 Jun 2016 00:28:35 GMT]]></title><description><![CDATA[<p>Wie wäre es mit Serialisierung? Hier ist eine Header-only Bibliothek <a href="http://uscilab.github.io/cereal/index.html" rel="nofollow">http://uscilab.github.io/cereal/index.html</a></p>
<p>Ein kleines Beispiel:</p>
<pre><code>#include &lt;cereal/archives/xml.hpp&gt;
#include &lt;iostream&gt;

struct Foo
{
    Foo(int a, int b)
        : a(a), b(b)
    {
    }

    int a, b;

    template &lt;class Archive&gt;
    void serialize( Archive &amp; ar )
    {

      ar.setNextName(&quot;a&quot;);
      ar(a);
      ar.setNextName(&quot;b&quot;);
      ar(b);
    }
};

int main(int argc, char *argv[])
{
    Foo foo(1, 2);
    cereal::XMLOutputArchive out(std::cout);

    out.setNextName(&quot;Foo&quot;);
    out(foo);
}
</code></pre>
<p>Ausgabe:</p>
<pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;cereal&gt;
	&lt;Foo&gt;
		&lt;a&gt;1&lt;/a&gt;
		&lt;b&gt;2&lt;/b&gt;
	&lt;/Foo&gt;
&lt;/cereal&gt;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2499705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2499705</guid><dc:creator><![CDATA[cereal]]></dc:creator><pubDate>Wed, 22 Jun 2016 00:28:35 GMT</pubDate></item><item><title><![CDATA[Reply to wie am besten Einstellungen oder größere Datenmengen verwalten? on Wed, 22 Jun 2016 09:14:45 GMT]]></title><description><![CDATA[<p>Lua oder AngelScript sind auch gute Kandidaten. Weil dann wird einem auch gleich bewusst, was für andere geile Möglichkeiten man damit hat. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2499734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2499734</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Wed, 22 Jun 2016 09:14:45 GMT</pubDate></item><item><title><![CDATA[Reply to wie am besten Einstellungen oder größere Datenmengen verwalten? on Wed, 22 Jun 2016 09:55:56 GMT]]></title><description><![CDATA[<p>da gibt es scheinbar eine Vielzahl sowas zu lösen. AngelScript kommt mir bekannt vor (programmieren von Mods für Spiele?). Ich werde mich da mal hineinlesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2499739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2499739</guid><dc:creator><![CDATA[SBond]]></dc:creator><pubDate>Wed, 22 Jun 2016 09:55:56 GMT</pubDate></item></channel></rss>