<?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[Verständnis vector&amp;lt;pair&amp;lt;string,string&amp;gt; &amp;gt;&#x2F;Pointer(strtok)]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>es geht sich um folgendes Beispiel:</p>
<pre><code class="language-cpp">//innerhalb der main
char * recvbuf = new char[10000];
std::vector&lt;std::pair&lt;std::string,std::string&gt; &gt; vector1;
//..
//..
//Socket-Recv mit recvbuf als angegebenen Buffer.
recv(..,recvbuf,...); //zur Veranschaulichung

XXXInstanz.Methode1(recvbuf, vector1); //&lt;-----Darum geht es.
</code></pre>
<pre><code class="language-cpp">class XXX
{
public:
XXX();
~XXX();
int Methode1(char * recvbuf, std::vector&lt;std::pair&lt;std::string,std::string&gt; &gt;   &amp;vect);

private:
char * m_pch;
char * m_pch2;

/*
Ist ein Pointer als Member, ok?
Ich habe gelesen, dass man dabei den Kopierkonstruktor als private deklarieren muss, da dieser sonst automatisch aufgerufen wird?!
Kann mir jemand vielleicht in einem Satz der Grund sagen - weshalb dies geschieht?
*/
}
</code></pre>
<pre><code class="language-cpp">XXX::XXX()
{
    m_pch = new char;
    m_pch2 = new char;
}

XXX::~XXX()
{
    delete m_pch2;
    delete m_pch;
}

XXX::Methode1(char * recvbuf, std::vector&lt;std::pair&lt;std::string,std::string&gt; &gt;  &amp;vect)
{
/*
Diese Methode erhält den Buffer
Frage 1: Wenn ich einen char pointer auf einen dynamisch allokierten Speicherbereich habe und einer
Funktion übergeben möchte, ist ein char* als Parameter richtig?!
Da dieser ja dynamisch allokiert ist, müsste der Pointer auf den Buffer, so lange gültig sein, bis ich den Speicherbereich wieder freigebe.
Verweist der übergebene Pointer somit direkt auf den Buffer?
*/

pch = strtok(recvbuf,&quot;#&quot;);
pch2 = strtork(NULL,&quot;#&quot;);
vector1.push_back(std::make_pair(pch,pch2));
/*
std::vector&lt;std::pair&lt;std::string,std::string&gt; &gt;
Frage 2:
Werden im Vektor lediglich Verweise auf die verschiedenen std::strings 
gespeichert oder wird der Konstruktor vom std::string automatisch aufgerufen 
und die strings innerhalb des std::vectors automatisch initialisiert?
Ich selber glaube schon ^^, wäre ja sosnt eine komische Definition des Vektors, wenn es dann doch nur Verweise wären....
*/

return 0;
}
</code></pre>
<p>Es sollten keine Librarys genutzt werden, lediglicht die Standard-Template Library.<br />
Ich weiß, dass mir tieferes Wissen fehlt, aber deshalb frag ich ja <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Zudem habe ich mich wirklich nur auf das nötigste beschränkt.</p>
<p>Danke im voraus</p>
<p>MfG Schnuckerlie</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/305118/verständnis-vector-lt-pair-lt-string-string-gt-gt-pointer-strtok</link><generator>RSS for Node</generator><lastBuildDate>Sun, 09 Aug 2026 03:05:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/305118.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 21 Jun 2012 13:20:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständnis vector&amp;lt;pair&amp;lt;string,string&amp;gt; &amp;gt;&#x2F;Pointer(strtok) on Thu, 21 Jun 2012 13:32:07 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>es geht sich um folgendes Beispiel:</p>
<pre><code class="language-cpp">//innerhalb der main
char * recvbuf = new char[10000];
std::vector&lt;std::pair&lt;std::string,std::string&gt; &gt; vector1;
//..
//..
//Socket-Recv mit recvbuf als angegebenen Buffer.
recv(..,recvbuf,...); //zur Veranschaulichung

XXXInstanz.Methode1(recvbuf, vector1); //&lt;-----Darum geht es.
</code></pre>
<pre><code class="language-cpp">class XXX
{
public:
XXX();
~XXX();
int Methode1(char * recvbuf, std::vector&lt;std::pair&lt;std::string,std::string&gt; &gt;   &amp;vect);

private:
char * m_pch;
char * m_pch2;

/*
Ist ein Pointer als Member, ok?
Ich habe gelesen, dass man dabei den Kopierkonstruktor als private deklarieren muss, da dieser sonst automatisch aufgerufen wird?!
Kann mir jemand vielleicht in einem Satz der Grund sagen - weshalb dies geschieht?
*/
}
</code></pre>
<pre><code class="language-cpp">XXX::XXX()
{
    m_pch = new char;
    m_pch2 = new char;
}

XXX::~XXX()
{
    delete m_pch2;
    delete m_pch;
}

XXX::Methode1(char * recvbuf, std::vector&lt;std::pair&lt;std::string,std::string&gt; &gt;  &amp;vect)
{
/*
Diese Methode erhält den Buffer
Frage 1: Wenn ich einen char pointer auf einen dynamisch allokierten Speicherbereich habe und einer
Funktion übergeben möchte, ist ein char* als Parameter richtig?!
Da dieser ja dynamisch allokiert ist, müsste der Pointer auf den Buffer, so lange gültig sein, bis ich den Speicherbereich wieder freigebe.
Verweist der übergebene Pointer somit direkt auf den Buffer?
*/

pch = strtok(recvbuf,&quot;#&quot;);
pch2 = strtork(NULL,&quot;#&quot;);
vector1.push_back(std::make_pair(pch,pch2));
/*
std::vector&lt;std::pair&lt;std::string,std::string&gt; &gt;
Frage 2:
Werden im Vektor lediglich Verweise auf die verschiedenen std::strings 
gespeichert oder wird der Konstruktor vom std::string automatisch aufgerufen 
und die strings innerhalb des std::vectors automatisch initialisiert?
Ich selber glaube schon ^^, wäre ja sosnt eine komische Definition des Vektors, wenn es dann doch nur Verweise wären....
*/

return 0;
}
</code></pre>
<p>Es sollten keine Librarys genutzt werden, lediglicht die Standard-Template Library.<br />
Ich weiß, dass mir tieferes Wissen fehlt, aber deshalb frag ich ja <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Zudem habe ich mich wirklich nur auf das nötigste beschränkt.</p>
<p>Danke im voraus</p>
<p>MfG Schnuckerlie</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2225785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225785</guid><dc:creator><![CDATA[zuckerlie]]></dc:creator><pubDate>Thu, 21 Jun 2012 13:32:07 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis vector&amp;lt;pair&amp;lt;string,string&amp;gt; &amp;gt;&#x2F;Pointer(strtok) on Thu, 21 Jun 2012 13:32:19 GMT]]></title><description><![CDATA[<p>Warum char*? Warum new? Warum strtok? Du sagst, du willst die STL benutzen, warum dann solche low-level Frickelei, wenn die STL das alles in gut und sicher bietet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2225790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225790</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 21 Jun 2012 13:32:19 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis vector&amp;lt;pair&amp;lt;string,string&amp;gt; &amp;gt;&#x2F;Pointer(strtok) on Thu, 21 Jun 2012 13:35:52 GMT]]></title><description><![CDATA[<p>Zu Frage 1:<br />
Ja.<br />
Zu Frage 2:<br />
Im allgemeinen letzteres. Prinzipiell ist aber ein vector erstmal leer erstellt. Wenn du etwas hinzufügst wird normalerweise das neue Objekt per copy-constructor erstellt, (kann in c++11 abweichen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2225794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225794</guid><dc:creator><![CDATA[KMT]]></dc:creator><pubDate>Thu, 21 Jun 2012 13:35:52 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis vector&amp;lt;pair&amp;lt;string,string&amp;gt; &amp;gt;&#x2F;Pointer(strtok) on Thu, 21 Jun 2012 13:43:59 GMT]]></title><description><![CDATA[<p>Warum char*?<br />
- ich weiß, dass es z.B. u.a. Smart Pointer,etc. gibt(aber habe mich diesbezüglich noch nicht beschäftigt, gehe gerade erst ins Land der STL ^^)</p>
<p>Warum new?<br />
- Weiß ich nicht, was für einen nachvollziehbaren Sinn dahinter steckt(In diesem Fall). Habe mal was Code auf nem alten FTP einiger Freunde aus nem alten Forum gefunden..)<br />
Und habe es rein aus Interesse mal gemacht, wollte bisschen mit Scope, Null-Pointern etc. rumspielen <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>Warum strtok?<br />
- Gibt es in der STL eine Alternative?!</p>
<p>Das Problem ist, dass ich mich erst seit ganz kurzer Zeit mit der STL beschäftige, fange gerade erst an sie zu erforschen ^^...</p>
<p>Aber das sind jetzt einfache Dinge, die ich gerade aus reinem Interesse frage.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2225800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225800</guid><dc:creator><![CDATA[zuckerlie]]></dc:creator><pubDate>Thu, 21 Jun 2012 13:43:59 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis vector&amp;lt;pair&amp;lt;string,string&amp;gt; &amp;gt;&#x2F;Pointer(strtok) on Thu, 21 Jun 2012 13:48:49 GMT]]></title><description><![CDATA[<p>zuckerlie schrieb:</p>
<blockquote>
<p>Warum char*?<br />
- ich weiß, dass es z.B. u.a. Smart Pointer,etc. gibt(aber habe mich diesbezüglich noch nicht beschäftigt, gehe gerade erst ins Land der STL ^^)</p>
</blockquote>
<p>Na, wenn es ein Lernprojekt ist, dann lern. Aber was neues, nicht altes C-Gefrickel/</p>
<blockquote>
<p>Warum new?<br />
- Weiß ich nicht, was für einen nachvollziehbaren Sinn dahinter steckt(In diesem Fall). Habe mal was Code auf nem alten FTP einiger Freunde aus nem alten Forum gefunden..)</p>
</blockquote>
<p>Schlechter Grund. Nimm vector.</p>
<blockquote>
<p>Warum strtok?<br />
- Gibt es in der STL eine Alternative?!</p>
</blockquote>
<p>std::string? Ok, ist streng genommen nicht STL, aber immerhin aus der Standardbibliothek und designtechnisch der STL ähnlich. Die algortihms bieten auch eine Menge Funktionen und sind STL. In string.h gibt es nichts, was es in C++ nicht gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2225808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2225808</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 21 Jun 2012 13:48:49 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnis vector&amp;lt;pair&amp;lt;string,string&amp;gt; &amp;gt;&#x2F;Pointer(strtok) on Fri, 22 Jun 2012 06:30:56 GMT]]></title><description><![CDATA[<p>zuckerlie schrieb:</p>
<blockquote>
<p>Warum new?<br />
- Weiß ich nicht, was für einen nachvollziehbaren Sinn dahinter steckt(In diesem Fall). Habe mal was Code auf nem alten FTP einiger Freunde aus nem alten Forum gefunden..)</p>
</blockquote>
<p>Wenn du mit Code, den du mal gesehen hast, herumspielst, dann bitte nur, weil du verstehst, was da passiert und ein wenig üben möchtest. Nicht, weil du <em>nicht</em> verstehst, warum die Freunde sowas geschrieben haben. Schau dir nicht anderer Leute Stil ab, wenn du nicth beurteilen kannst, ob der Stil gut oder sinnvoll ist oder nicht.</p>
<blockquote>
<p>Das Problem ist, dass ich mich erst seit ganz kurzer Zeit mit der STL beschäftige, fange gerade erst an sie zu erforschen ^^...</p>
</blockquote>
<p>Dann forsche, obs für das was du machen möchtest, was in der Standardbibliothek gibt, statt auf bekannte Lösungen aus C zurückzugreifen.</p>
<p><a href="http://www.cppreference.com" rel="nofollow">www.cppreference.com</a><br />
<a href="http://www.cplusplus.com/reference" rel="nofollow">www.cplusplus.com/reference</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2226054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2226054</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 22 Jun 2012 06:30:56 GMT</pubDate></item></channel></rss>