<?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[Stringlisten und Review]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>ich versuche gerade etwas mit Stringlisten zu machen. Hier im konkretem Fall möchte ich alle MAC Adressen auslesen. BSP im Inet (VB6 Code): <a href="http://www.office-loesung.de/ftopic1521_0_0_asc.php" rel="nofollow">http://www.office-loesung.de/ftopic1521_0_0_asc.php</a></p>
<p>Ich habe 3 Fragen:<br />
<strong>1.</strong> Die MACs bekomme ich in einen C++ String gelesen. Bloß wenn ich den Pointer auf den String in die Liste schreibe und ihn später wieder raushole steht an der Stelle etwas anderes. (Der Speicher wurde mit new angefordert und nicht wieder freigegeben.)</p>
<p><strong>2.</strong> Beim kompilieren kommen diese Warnungen:</p>
<pre><code>warning C4786: 'std::reverse_bidirectional_iterator&lt;std::list&lt;std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;
 &gt; *,std::allocator&lt;std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; *&gt; 
&gt;::iterator,std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; 
*,std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; * 
&amp;,std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; * *,int&gt;' 
: identifier was truncated to '255' characters in the debug information
</code></pre>
<p>Bei einem Doppelklick lande ich im LIST Header vom VS6.0. Was soll mir das sagen?</p>
<p><strong>3.</strong> Allgemein gefragt: Ist das guter (durchschnittlicher) C++ Code oder schleppe ich sonst noch irgendwo C Zeugs mit rum?</p>
<p>Um den Source zum Laufen zu bringen einfach diesen Source in einen Header mit Namen aaaa.h auslagern. Den Source darunter in ein KonsolenProjekt kopieren und die main() überschrieben. Man benötigt das Microsoft SDK und die IPHlpApi.lib.</p>
<pre><code class="language-cpp">// Diese Klasse liesst bestimmte Computer Daten ein und stellt sie der Applikation
// zur Verfügung. Die Daten werden im Konstruktor eingesammelt und stehen dann
// als PublicMember zur Verfügung. Die Daten die eingesammelt werden sind:
//   -- Liste der Mac Addressen.

#ifndef _ComputerData_
#define _ComputerData_

#include &lt;windows.h&gt;
#include &lt;sstream&gt; 
#include &lt;list&gt;
#include &lt;IPHlpApi.h&gt; // Ermittlung der Mac Adresse.

using namespace std; 

// Fehler die intern auftreten können:
enum ErrorConst {
	NoMacAddress
};

class ComputerData {
public:
	list&lt;string *&gt; m_oMacAddresses;

	ComputerData();
	~ComputerData();

private:
	FillMacAddress() throw(ErrorConst);
};

#endif // _ComputerData_
</code></pre>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;

#include &lt;iostream&gt;
#include &quot;aaaa.h&quot;

// Füllt alle MAC Addressen (maximal 100) in eine Liste:
ComputerData::FillMacAddress() throw(ErrorConst) {
	ostringstream ss;
	char *AdapterInfo;
	DWORD dwBufLen=0, result=0;
	char *cMac=0;
	string *sTemp;

	// Mac Adressen per Api holen:
	dwBufLen = sizeof(AdapterInfo)/sizeof(IP_ADAPTER_INFO);
	result = GetAdaptersInfo(0, &amp;dwBufLen);

	AdapterInfo = new char[dwBufLen];

	result = GetAdaptersInfo((IP_ADAPTER_INFO *)AdapterInfo, &amp;dwBufLen);
	PIP_ADAPTER_INFO pAdapterInfo = (IP_ADAPTER_INFO *)AdapterInfo;

	// Fehler werfen wenn keine gefunden:
	if (!pAdapterInfo)
		throw NoMacAddress;

	// Schreibe jede Mac in die Liste:
	do {
		cMac = new char[18];

		// Schreibe die MAC mit Bidnestrichen formatiert in ein char[]:
		sprintf(cMac, &quot;%02x-%02x-%02x-%02x-%02x-%02x&quot;,
			(pAdapterInfo-&gt;Address)[0],
			(pAdapterInfo-&gt;Address)[1],
			(pAdapterInfo-&gt;Address)[2],
			(pAdapterInfo-&gt;Address)[3],
			(pAdapterInfo-&gt;Address)[4],
			(pAdapterInfo-&gt;Address)[5]
		);

		// Konvertiere die MAC von char[] nach string und schreibe den String in die Liste:
		ss &lt;&lt; cMac;
		delete[] cMac;
		sTemp = new string();
		*sTemp = ss.str();
		m_oMacAddresses.push_back(sTemp); // sTemp ist ein Pointer auf einen String mit gültiger MAC.
		ss.str(&quot;&quot;);
	} while (pAdapterInfo=pAdapterInfo-&gt;Next);
}

// Hole die Daten per Funktionsaufruf im Konstruktor:
ComputerData::ComputerData() {
	try {
		FillMacAddress();
	} catch (ErrorConst e) {
		switch (e) {
		case NoMacAddress:
			cout &lt;&lt; &quot;MacAddress could no be read.&quot; &lt;&lt; endl;
			break;
		default:
			cout &lt;&lt; &quot;Unknown error.&quot; &lt;&lt; endl;
		}
	} catch (...) {
		cout &lt;&lt; &quot;Unknown error.&quot; &lt;&lt; endl;
	}
}

// Den Speicher der Stringliste wieder freigeben:
ComputerData::~ComputerData() {
	if (m_oMacAddresses.size()) {
		for(list&lt;string*&gt;::iterator pos=m_oMacAddresses.begin(); 
			 pos!=m_oMacAddresses.end();
			 pos++) {
			delete *pos;
		}
	}
}

int main(int argc, char* argv[]) {
	ComputerData *oData;

	oData = new ComputerData();

	for(list&lt;string*&gt;::iterator pos=oData-&gt;m_oMacAddresses.begin(); 
		 pos!=oData-&gt;m_oMacAddresses.end();
		 pos++) {
		cout &lt;&lt; *pos &lt;&lt; endl; // Hier steht nicht die MAC!
	}
	delete  oData;

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/177110/stringlisten-und-review</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 18:30:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/177110.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 28 Mar 2007 12:05:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Stringlisten und Review on Wed, 28 Mar 2007 12:05:44 GMT]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>ich versuche gerade etwas mit Stringlisten zu machen. Hier im konkretem Fall möchte ich alle MAC Adressen auslesen. BSP im Inet (VB6 Code): <a href="http://www.office-loesung.de/ftopic1521_0_0_asc.php" rel="nofollow">http://www.office-loesung.de/ftopic1521_0_0_asc.php</a></p>
<p>Ich habe 3 Fragen:<br />
<strong>1.</strong> Die MACs bekomme ich in einen C++ String gelesen. Bloß wenn ich den Pointer auf den String in die Liste schreibe und ihn später wieder raushole steht an der Stelle etwas anderes. (Der Speicher wurde mit new angefordert und nicht wieder freigegeben.)</p>
<p><strong>2.</strong> Beim kompilieren kommen diese Warnungen:</p>
<pre><code>warning C4786: 'std::reverse_bidirectional_iterator&lt;std::list&lt;std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;
 &gt; *,std::allocator&lt;std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; *&gt; 
&gt;::iterator,std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; 
*,std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; * 
&amp;,std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; * *,int&gt;' 
: identifier was truncated to '255' characters in the debug information
</code></pre>
<p>Bei einem Doppelklick lande ich im LIST Header vom VS6.0. Was soll mir das sagen?</p>
<p><strong>3.</strong> Allgemein gefragt: Ist das guter (durchschnittlicher) C++ Code oder schleppe ich sonst noch irgendwo C Zeugs mit rum?</p>
<p>Um den Source zum Laufen zu bringen einfach diesen Source in einen Header mit Namen aaaa.h auslagern. Den Source darunter in ein KonsolenProjekt kopieren und die main() überschrieben. Man benötigt das Microsoft SDK und die IPHlpApi.lib.</p>
<pre><code class="language-cpp">// Diese Klasse liesst bestimmte Computer Daten ein und stellt sie der Applikation
// zur Verfügung. Die Daten werden im Konstruktor eingesammelt und stehen dann
// als PublicMember zur Verfügung. Die Daten die eingesammelt werden sind:
//   -- Liste der Mac Addressen.

#ifndef _ComputerData_
#define _ComputerData_

#include &lt;windows.h&gt;
#include &lt;sstream&gt; 
#include &lt;list&gt;
#include &lt;IPHlpApi.h&gt; // Ermittlung der Mac Adresse.

using namespace std; 

// Fehler die intern auftreten können:
enum ErrorConst {
	NoMacAddress
};

class ComputerData {
public:
	list&lt;string *&gt; m_oMacAddresses;

	ComputerData();
	~ComputerData();

private:
	FillMacAddress() throw(ErrorConst);
};

#endif // _ComputerData_
</code></pre>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;

#include &lt;iostream&gt;
#include &quot;aaaa.h&quot;

// Füllt alle MAC Addressen (maximal 100) in eine Liste:
ComputerData::FillMacAddress() throw(ErrorConst) {
	ostringstream ss;
	char *AdapterInfo;
	DWORD dwBufLen=0, result=0;
	char *cMac=0;
	string *sTemp;

	// Mac Adressen per Api holen:
	dwBufLen = sizeof(AdapterInfo)/sizeof(IP_ADAPTER_INFO);
	result = GetAdaptersInfo(0, &amp;dwBufLen);

	AdapterInfo = new char[dwBufLen];

	result = GetAdaptersInfo((IP_ADAPTER_INFO *)AdapterInfo, &amp;dwBufLen);
	PIP_ADAPTER_INFO pAdapterInfo = (IP_ADAPTER_INFO *)AdapterInfo;

	// Fehler werfen wenn keine gefunden:
	if (!pAdapterInfo)
		throw NoMacAddress;

	// Schreibe jede Mac in die Liste:
	do {
		cMac = new char[18];

		// Schreibe die MAC mit Bidnestrichen formatiert in ein char[]:
		sprintf(cMac, &quot;%02x-%02x-%02x-%02x-%02x-%02x&quot;,
			(pAdapterInfo-&gt;Address)[0],
			(pAdapterInfo-&gt;Address)[1],
			(pAdapterInfo-&gt;Address)[2],
			(pAdapterInfo-&gt;Address)[3],
			(pAdapterInfo-&gt;Address)[4],
			(pAdapterInfo-&gt;Address)[5]
		);

		// Konvertiere die MAC von char[] nach string und schreibe den String in die Liste:
		ss &lt;&lt; cMac;
		delete[] cMac;
		sTemp = new string();
		*sTemp = ss.str();
		m_oMacAddresses.push_back(sTemp); // sTemp ist ein Pointer auf einen String mit gültiger MAC.
		ss.str(&quot;&quot;);
	} while (pAdapterInfo=pAdapterInfo-&gt;Next);
}

// Hole die Daten per Funktionsaufruf im Konstruktor:
ComputerData::ComputerData() {
	try {
		FillMacAddress();
	} catch (ErrorConst e) {
		switch (e) {
		case NoMacAddress:
			cout &lt;&lt; &quot;MacAddress could no be read.&quot; &lt;&lt; endl;
			break;
		default:
			cout &lt;&lt; &quot;Unknown error.&quot; &lt;&lt; endl;
		}
	} catch (...) {
		cout &lt;&lt; &quot;Unknown error.&quot; &lt;&lt; endl;
	}
}

// Den Speicher der Stringliste wieder freigeben:
ComputerData::~ComputerData() {
	if (m_oMacAddresses.size()) {
		for(list&lt;string*&gt;::iterator pos=m_oMacAddresses.begin(); 
			 pos!=m_oMacAddresses.end();
			 pos++) {
			delete *pos;
		}
	}
}

int main(int argc, char* argv[]) {
	ComputerData *oData;

	oData = new ComputerData();

	for(list&lt;string*&gt;::iterator pos=oData-&gt;m_oMacAddresses.begin(); 
		 pos!=oData-&gt;m_oMacAddresses.end();
		 pos++) {
		cout &lt;&lt; *pos &lt;&lt; endl; // Hier steht nicht die MAC!
	}
	delete  oData;

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1254525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254525</guid><dc:creator><![CDATA[C++ Anfänger 2]]></dc:creator><pubDate>Wed, 28 Mar 2007 12:05:44 GMT</pubDate></item><item><title><![CDATA[Reply to Stringlisten und Review on Wed, 28 Mar 2007 12:09:53 GMT]]></title><description><![CDATA[<p>pos ist der Iterator.<br />
*pos ist der Zeiger auf den String.<br />
**pos ist der String.</p>
<p>Warum speicherst du überhaupt Zeiger?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254528</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 28 Mar 2007 12:09:53 GMT</pubDate></item><item><title><![CDATA[Reply to Stringlisten und Review on Wed, 28 Mar 2007 12:12:47 GMT]]></title><description><![CDATA[<p>@1: Lass am besten das ganze Zeiger-Gegurke weg - string's sind kompakt genug, um sie auch auf dem Stack anzulegen und zu verwalten.</p>
<p>@2: Die Warnung kannst du i.a. ignorieren (oder per #pragma gleich abschalten).</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5290">@3</a>: Der Code ist grauenhaft <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> (besonders das oben erwähnte Zeiger-Gegurke)</p>
<p>PS: Und eventuell solltest du dir mal ansehen, was sizeof kann (und was nicht).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254530</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 28 Mar 2007 12:12:47 GMT</pubDate></item><item><title><![CDATA[Reply to Stringlisten und Review on Wed, 28 Mar 2007 12:30:33 GMT]]></title><description><![CDATA[<p>Erstmal vielen Dank für die Tips <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 jetzt SizeOf() antfernt und eine Stringliste ohne Pointer gemacht:</p>
<pre><code class="language-cpp">list&lt;string&gt; m_oMacAddresses;
</code></pre>
<p>Wie lösche ich jetzt den String?</p>
<p>Nach dem was MFK gesagt hat muß bei jetziger Listendefinition *pos der String sein. Warum geht dann &quot;delete *pos;&quot; nicht?</p>
<pre><code class="language-cpp">ComputerData::~ComputerData() {
	if (m_oMacAddresses.size()) {
		for(list&lt;string&gt;::iterator pos=m_oMacAddresses.begin(); 
			 pos!=m_oMacAddresses.end();
			 pos++) {
			delete *pos;
		}
	}
}
</code></pre>
<p>Fehlermeldung:</p>
<blockquote>
<p>cannot convert from 'class std::basic_string&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt;' to ''</p>
</blockquote>
<p>Gibt es keine praktikable alternative zu sprintf() in iostream?</p>
<p>Was wäre noch Verbesserungswürdig? Die beiden alten C Casts werfe ich schon selber heraus wenn ich die richtigen Datentypen zu IP_ADAPTER_INFO gefunden habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254543</guid><dc:creator><![CDATA[C++ Anfänger 2]]></dc:creator><pubDate>Wed, 28 Mar 2007 12:30:33 GMT</pubDate></item><item><title><![CDATA[Reply to Stringlisten und Review on Wed, 28 Mar 2007 12:38:25 GMT]]></title><description><![CDATA[<p>Die Listenelemente kannst du ganz einfach per erase() löschen (aber an der Stelle ist das nicht einmal nötig, die liste räumt schon selber auf, wenn sie vernichtet wird).</p>
<p>Und als Alternative zu sprintf() kannst du die Stream-Ausgabe per &lt;&lt; verwenden:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254550</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 28 Mar 2007 12:38:25 GMT</pubDate></item><item><title><![CDATA[Reply to Stringlisten und Review on Wed, 28 Mar 2007 13:21:26 GMT]]></title><description><![CDATA[<p>C++ Anfänger 2 schrieb:</p>
<blockquote>
<p>...Wie lösche ich jetzt den String?...</p>
</blockquote>
<p>*** ambiguity error*** <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
&quot;string löschen&quot; = &quot;Einen String aus der Liste entfernen&quot;<br />
&quot;string löschen&quot; = &quot;Stringobjekt destruieren&quot;<br />
&quot;string löschen&quot; = &quot;Inhalt auf fachlich leeren String setzen&quot;</p>
<p>Ersteres: s. CStoll.<br />
Zweiteres: Gar nicht - brauchst Du auch nicht.<br />
Drittes: = &quot;&quot;; (wenn Du's wirklich brauchen solltest)</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254606</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 28 Mar 2007 13:21:26 GMT</pubDate></item><item><title><![CDATA[Reply to Stringlisten und Review on Wed, 28 Mar 2007 14:29:06 GMT]]></title><description><![CDATA[<p>Zu der Liste habe ich noch ein paar Fragen.</p>
<pre><code class="language-cpp">//Sie ist jetzt so angelegt:
list&lt;string&gt; m_oMacAddresses;

// aaa zeigt auf ein mit new angeforderten string.
m_oMacAddresses.push_back(*aaa);

// Den einzigen String holen:
list&lt;string&gt;::iterator pos = m_oMacAddresses.begin(); 

// *pos ist also der String ,also pos die Adresse des Strings.
cout &lt;&lt; *pos &lt;&lt; endl;

// Aus der Liste entfernen:
m_oMacAddresses.remove(*pos);

// Warum geht &quot;temp = pos;&quot; nicht? pos ist doch nur ein Pointer auf den String? (Siehe cout)
string *temp = &amp;(*pos); 

// Das geht, aber warum kann ich &quot;delete pos&quot; auch nicht machen wenn es ein Pointer auf den String ist?
delete temp;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1254689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254689</guid><dc:creator><![CDATA[C++ Anfänger 2]]></dc:creator><pubDate>Wed, 28 Mar 2007 14:29:06 GMT</pubDate></item><item><title><![CDATA[Reply to Stringlisten und Review on Wed, 28 Mar 2007 14:47:16 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>mach es Dir doch noch einfacher:</p>
<pre><code class="language-cpp">//Sie ist jetzt so angelegt:
list&lt;string&gt; m_oMacAddresses;

string aaa = &quot;Simon2&quot;;

// aaa ist der string. list legt selbst eine Kopie an.
m_oMacAddresses.push_back(aaa);

// Den einzigen String holen:
list&lt;string&gt;::iterator pos = m_oMacAddresses.begin(); 

// pos verweist auf den String und mit *pos bekomme ich Zugriff auf den String
cout &lt;&lt; *pos &lt;&lt; endl;

// Alle gleichlautenden Strings aus der Liste entfernen - führt auch dazu, dass diese Stringobjekte selbst freigegeben werden:
m_oMacAddresses.remove(*pos);
</code></pre>
<p>und pos ist kein &quot;Pointer auf einen String&quot;, sondern ein Iterator !<br />
Sieht man schon am Typen: list&lt;string&gt;::iterator<br />
Für bestimmte Situationen funktioniert zwar ein Pointer wie ein Iterator, aber das heißt noch nicht, dass sie immer identisch seien (und in diesem Fall eben auch nicht).</p>
<p>Übrigens list::remove() entfernt ALLE passenden Strings aus dem Container !! Das können durchaus mehr als einer sein !<br />
Willst Du nur den einen entfernen, hilft erase():</p>
<pre><code class="language-cpp">list&lt;string&gt; m_oMacAddresses;
string aaa = &quot;Simon2&quot;;
m_oMacAddresses.push_back(aaa);
m_oMacAddresses.push_back(aaa); // nochmal einen einfügen
list&lt;string&gt;::iterator pos = m_oMacAddresses.begin(); 
cout &lt;&lt; *pos &lt;&lt; endl;
m_oMacAddresses.erase(*pos);
</code></pre>
<p>Hier ist nur das erste &quot;Simon2&quot; aus der Liste entfernt (und gelöscht) worden...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254703</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 28 Mar 2007 14:47:16 GMT</pubDate></item><item><title><![CDATA[Reply to Stringlisten und Review on Wed, 28 Mar 2007 14:56:34 GMT]]></title><description><![CDATA[<p>Puh ist das ungewohnt. Ich hatte vor 4-5 Jahren im Grundstudium mal 1 Semester lang C++ aber das waren wohl wirklich nur die Basics. Ich werde mir erstmal ein Buch aus einer Bücherei holen wo die STL erklärt wird. Und wie ich jetzt lese ist es auch gar nicht die STL wie mir während des Studiums beigebracht worden ist...<br />
<a href="http://de.wikipedia.org/wiki/C++-Standardbibliothek" rel="nofollow">http://de.wikipedia.org/wiki/C++-Standardbibliothek</a></p>
<blockquote>
<p>wurde aber im Laufe der Standardisierung durch den Einfluss einer bei Hewlett-Packard entwickelten Bibliothek namens Standard Template Library (STL) stark überarbeitet. Heute wird fälschlicherweise die C++-Standardbibliothek im Volksmund immer noch STL genannt, obwohl</p>
</blockquote>
<p>Vielen Dank Simon, CStoll und MFK <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/1254716</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254716</guid><dc:creator><![CDATA[C++ Anfänger 2]]></dc:creator><pubDate>Wed, 28 Mar 2007 14:56:34 GMT</pubDate></item></channel></rss>