<?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[String teilen]]></title><description><![CDATA[<p>Guten Tag zusammen,</p>
<p>ich hätte da ein Problem, bei dem ihr mir eventuell behilflichsein könntet.<br />
Und zwar möchte ich eine Funktion schreiben, die einen String nach einem bestimmten Zeichen spalten soll und die substrings dann in einem Array speichet.<br />
Meine bissherigen lösungsanzätze waren, dass ich mit mit substr() gearbeitet habe jedoch weiß ich nicht wie ich den Substring aus dem inputstring entferne, damit ich den nächsten Substring erhalte.</p>
<p>Hier meine Ansatz bis jetzt:</p>
<pre><code class="language-cpp">void main()
{
	string input=&quot;12;33;34;22;11;823&quot;;
	char delim=';';
	int output[200]={0};

	terminator(input, delim, output);

}

void terminator(string input, char delim, int output[])
{
	string temp;
	int last=0;

	while(last!=-1)
	{
	last = input.find_last_of(&quot;;&quot;);
	temp=input.substr(last+1);
	cout&lt;&lt;temp;
	getch();
	}

}
</code></pre>
<p>Wäre super wenn ihr mir weiter helfen könntet.</p>
<p>mfg Mark</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/289536/string-teilen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 02:53:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/289536.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 07 Jul 2011 09:02:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to String teilen on Thu, 07 Jul 2011 09:02:17 GMT]]></title><description><![CDATA[<p>Guten Tag zusammen,</p>
<p>ich hätte da ein Problem, bei dem ihr mir eventuell behilflichsein könntet.<br />
Und zwar möchte ich eine Funktion schreiben, die einen String nach einem bestimmten Zeichen spalten soll und die substrings dann in einem Array speichet.<br />
Meine bissherigen lösungsanzätze waren, dass ich mit mit substr() gearbeitet habe jedoch weiß ich nicht wie ich den Substring aus dem inputstring entferne, damit ich den nächsten Substring erhalte.</p>
<p>Hier meine Ansatz bis jetzt:</p>
<pre><code class="language-cpp">void main()
{
	string input=&quot;12;33;34;22;11;823&quot;;
	char delim=';';
	int output[200]={0};

	terminator(input, delim, output);

}

void terminator(string input, char delim, int output[])
{
	string temp;
	int last=0;

	while(last!=-1)
	{
	last = input.find_last_of(&quot;;&quot;);
	temp=input.substr(last+1);
	cout&lt;&lt;temp;
	getch();
	}

}
</code></pre>
<p>Wäre super wenn ihr mir weiter helfen könntet.</p>
<p>mfg Mark</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089810</guid><dc:creator><![CDATA[BamDenied]]></dc:creator><pubDate>Thu, 07 Jul 2011 09:02:17 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Thu, 07 Jul 2011 09:12:53 GMT]]></title><description><![CDATA[<p>String in Stringstream packen (erschlägt das Problem mit dem Entfernen) und getline (bei getline kann man Trennzeichen angeben) benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089814</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 07 Jul 2011 09:12:53 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Thu, 07 Jul 2011 10:14:13 GMT]]></title><description><![CDATA[<p>und nicht int output[] sondern lieber std::vector<a href="std::string" rel="nofollow">std::string</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089835</guid><dc:creator><![CDATA[kjlk]]></dc:creator><pubDate>Thu, 07 Jul 2011 10:14:13 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Thu, 07 Jul 2011 10:42:31 GMT]]></title><description><![CDATA[<p>Version 1 (stringstream)</p>
<pre><code class="language-cpp">void split(string str,vector &lt;string&gt; &amp;vec,char delemiter)
{
	stringstream sstr(str);
	if(vec.size()) vector&lt;string&gt;().swap(vec);
	while(getline(sstr,str,delemiter)) vec.push_back(str);
}
</code></pre>
<p>Version 2 (ohne stringstream geringfügig schneller)</p>
<pre><code class="language-cpp">void split(const string &amp;source,vector &lt;string&gt; &amp;split,char delemiter)
{
	unsigned p(-1),o;
	if(split.size()) vector&lt;string&gt;().swap(split);
	do
	{
	o=++p;
	p=source.find(delemiter,p);
	split.push_back(source.substr(o,p-o));
	}
	while(p!=string::npos);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2089843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089843</guid><dc:creator><![CDATA[splitted]]></dc:creator><pubDate>Thu, 07 Jul 2011 10:42:31 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Thu, 07 Jul 2011 10:55:14 GMT]]></title><description><![CDATA[<p>da ist noch ein kleiner bug bzw. überbleibsel (int und nicht unsigned).</p>
<pre><code class="language-cpp">void split(const string &amp;source,vector &lt;string&gt; &amp;split,char delemiter) 
{ 
    int p(-1),o; 
    if(split.size()) vector&lt;string&gt;().swap(split); 
    do 
    { 
    o=++p; 
    p=source.find(delemiter,p); 
    split.push_back(source.substr(o,p-o)); 
    } 
    while(p!=string::npos); 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2089848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089848</guid><dc:creator><![CDATA[splitted]]></dc:creator><pubDate>Thu, 07 Jul 2011 10:55:14 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Thu, 07 Jul 2011 11:22:40 GMT]]></title><description><![CDATA[<p>Ist das normal, dass man bei Iteratoren ein Assertion failed um die Ohren bekommt, sobald ein Iterator mal außerhalb seiner üblichen Umgebung ist?<br />
Das verhindert dann nämlich hier z.B. eine schöne Schleifenbedingung:<br />
(Ich hoffe mal ich übersehe da etwas..)</p>
<pre><code class="language-cpp">void arnold(std::string::iterator first, std::string::iterator last, 
  char delim, std::vector&lt;std::string&gt;&amp; output)
{
  std::string::iterator it = std::find(first, last, delim);
  while (it != last)
  {
    output.push_back(std::string(first, it));
    first = it + 1;
    it = std::find(first, last, delim);
  }
  output.push_back(std::string(first, it));
}

int main()
{
  std::string input = &quot;12;33;34;22;11;823&quot;;
  std::vector&lt;std::string&gt; output;
  char delim = ';';

  arnold(input.begin(), input.end(), delim, output);

  for (std::vector&lt;std::string&gt;::iterator i = output.begin(); 
    i &lt; output.end(); ++i)
  {
    std::cout &lt;&lt; *i &lt;&lt; std::endl;
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2089856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089856</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Thu, 07 Jul 2011 11:22:40 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Thu, 07 Jul 2011 11:32:13 GMT]]></title><description><![CDATA[<p>boost::algorithm <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2089869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2089869</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Thu, 07 Jul 2011 11:32:13 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Thu, 07 Jul 2011 16:06:25 GMT]]></title><description><![CDATA[<p>Hab ich neulich geschrieben, funktioniert auch mit std::vector und anderen Containern und du kannst noch eine Compare-Funktion angeben, falls du die Objekte nicht mit dem ==-Operator vergleichen willst: (Achtung, C++0x dabei!)</p>
<pre><code class="language-cpp">//works for vectors as well as for strings
//GetTokenized(&quot;a:bc:def::g&quot;, ':') == {&quot;a&quot;, &quot;bc&quot;, &quot;def&quot;, &quot;g&quot;}
template&lt;typename T&gt; bool DefaultCompareFunc(T const &amp;first, T const &amp;second)
{
    return first == second;
}

template&lt;typename T, typename... ExtraArgs, template&lt;class T, class... ExtraArgs&gt; class Container, typename FuncType&gt;
    std::vector&lt;Container&lt;T&gt; &gt; GetTokenized(Container&lt;T&gt; const &amp;in, T const &amp;comp_value, FuncType comp_func)
{
    std::vector&lt;Container&lt;T&gt; &gt; ret;

    typename Container&lt;T&gt;::const_iterator start_iter = in.begin(), end_iter = in.begin();
    while(end_iter != in.end())
    {
        if(comp_func(*end_iter, comp_value))
        {
            if(start_iter != end_iter)
            {
                ret.push_back(Container&lt;T&gt;(start_iter, end_iter));
            }
            start_iter = end_iter;
            ++start_iter;
        }
        ++end_iter;
    }

    return ret;
}

template&lt;typename T, typename... ExtraArgs, template&lt;class T, class... ExtraArgs&gt; class Container&gt;
    std::vector&lt;Container&lt;T&gt; &gt; GetTokenized(Container&lt;T&gt; const &amp;in, T const &amp;comp_value)
{
    return GetTokenized(in, comp_value, DefaultCompareFunc&lt;T&gt;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2090009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090009</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Thu, 07 Jul 2011 16:06:25 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Thu, 07 Jul 2011 17:16:21 GMT]]></title><description><![CDATA[<p>Wie wäre es mit boost::split?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090028</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 07 Jul 2011 17:16:21 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Thu, 07 Jul 2011 20:57:24 GMT]]></title><description><![CDATA[<p>Habe alle Versionen mal in Bezug auf Geschwindigkeit durchgetestet.<br />
Habe einen string mit 6 Token in einer fünf Millionen! Loop zerlegt.(ich weiss das ist ein sehr realitätsfremdes Beispiel)<br />
1. vector füllen über string::find und substr. (ca. 31 Sek.)<br />
2. vector füllen über algorithm::find und string::iterator (ca. 41 Sek.)<br />
3. vector füllen über stringstream (ca. 51 Sek.)<br />
4. vector füllen über boost::split (ca. 73 Sek.)<br />
Überrascht hat mich eigentlich nur das Ergebnis von boost::split.<br />
Die stringstream Variante wird wohl durch das kopieren des strings in den stream ausgebremst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090110</guid><dc:creator><![CDATA[splitted]]></dc:creator><pubDate>Thu, 07 Jul 2011 20:57:24 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Fri, 08 Jul 2011 06:40:50 GMT]]></title><description><![CDATA[<p>Danke ich konnte das Problem jetzt lösen.<br />
Nun bin ich an dem Problem angelangt das ich den vector&lt;string&gt; nicht in Integer convertiert kriege.<br />
Mit atoi gehts nicht. Hat irgendjemand dazu auch eine Idee?</p>
<p>Vielen Dank.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090179</guid><dc:creator><![CDATA[BamDenied]]></dc:creator><pubDate>Fri, 08 Jul 2011 06:40:50 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Fri, 08 Jul 2011 06:58:31 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">for(int i = 0; i &lt; bis.size(); i++) 
{      
	 output.push_back( atoi( bis.at(i).c_str() ) ); 
}
</code></pre>
<p>Hab es geschafft den String in integer zu kovertieren, danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090186</guid><dc:creator><![CDATA[BamDenied]]></dc:creator><pubDate>Fri, 08 Jul 2011 06:58:31 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Fri, 08 Jul 2011 13:24:36 GMT]]></title><description><![CDATA[<p>Wenn du eh Zahlen haben möchtest, mach es doch in einem Rutsch.</p>
<pre><code class="language-cpp">void arnold(const char *s, std::vector&lt;int&gt;&amp; output)
{
  const char *p = s - 1;
  s += std::strlen(s);
  while (p &lt; s)
    output.push_back(std::strtol(p + 1, const_cast&lt;char**&gt;(&amp;p), 10));
}
</code></pre>
<p>Und wenn du jetzt als &quot;delim&quot; ein einfaches Leerzeichen nimmst, kannst du dir sogar das hässliche p + 1 sparen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090313</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Fri, 08 Jul 2011 13:24:36 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Fri, 08 Jul 2011 15:07:50 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/11887">@cookie</a>: Was soll denn diese hässliche C-Lösung hier bringen? Wenn schon, dann bitte richtig:</p>
<pre><code class="language-cpp">void arnold(const string&amp; s,vector&lt;int&gt;&amp; out)
{
  stringstream str(s);
  int val;
  while(str&gt;&gt;val)
  {
    str.get();//zum Verarbeiten des Trennzeichens
    out.push_back(val);
  }
}
</code></pre>
<p>(und bestimmt findet noch jemand eine Lösung mit std::copy() und Stream-Iteratoren :D)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090350</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 08 Jul 2011 15:07:50 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Fri, 08 Jul 2011 17:19:06 GMT]]></title><description><![CDATA[<p>Ist das gemogelt?</p>
<pre><code class="language-cpp">vector&lt;int&gt; arnold(string input)
{
	vector&lt;int&gt; result;
	replace(input.begin(), input.end(), ';', ' ');
	stringstream stream(input);
	copy(istream_iterator&lt;int&gt;(stream), istream_iterator&lt;int&gt;(), back_inserter(result));
	return result;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2090397</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090397</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 08 Jul 2011 17:19:06 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Fri, 08 Jul 2011 20:36:55 GMT]]></title><description><![CDATA[<p>Für sowas ist das zuviel overhead ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090453</guid><dc:creator><![CDATA[372368]]></dc:creator><pubDate>Fri, 08 Jul 2011 20:36:55 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Fri, 08 Jul 2011 20:42:06 GMT]]></title><description><![CDATA[<p>372368 schrieb:</p>
<blockquote>
<p>Für sowas ist das zuviel overhead ...</p>
</blockquote>
<p>Inwiefern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090456</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 08 Jul 2011 20:42:06 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Sat, 09 Jul 2011 00:07:54 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/11887">@cookie</a>: Was soll denn diese hässliche C-Lösung hier bringen?</p>
</blockquote>
<p>Nachdem er ja eh schon .c_str() genutzt hat, war mir das const char* jetzt auch recht. Und nachdem ich leider festellen musste, dass die C++ Streams einfach unfassbar langsam sind, nutze ich strtol() sobald man sehr viele Zahlen umwandeln muss. Es wird nicht unübersichtlicher und die Streams bieten mir auch keinen erkennbaren Vorteil.<br />
(Deine Lösung braucht auf meinem System z.B. ~25 mal so lange wie meine.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090499</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 09 Jul 2011 00:07:54 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Sat, 09 Jul 2011 09:15:21 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>(Deine Lösung braucht auf meinem System z.B. ~25 mal so lange wie meine.)</p>
</blockquote>
<p>Das glaub ich dir nicht so recht. Wie sieht dein Testprogramm aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090557</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Sat, 09 Jul 2011 09:15:21 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Sat, 09 Jul 2011 09:21:42 GMT]]></title><description><![CDATA[<p>Michael E. schrieb:</p>
<blockquote>
<p>cooky451 schrieb:</p>
<blockquote>
<p>(Deine Lösung braucht auf meinem System z.B. ~25 mal so lange wie meine.)</p>
</blockquote>
<p>Das glaub ich dir nicht so recht. Wie sieht dein Testprogramm aus?</p>
</blockquote>
<p>Ist doch Standard.<br />
ifstreams schaffen es bei mir teilweise nichtmal den Plattencontroller auszulasten (Raid 0 mit 2 Platten), langsamer wie ne HDD - das muss man erstmal schaffen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090558</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Sat, 09 Jul 2011 09:21:42 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Sat, 09 Jul 2011 09:32:21 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>CStoll schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/11887">@cookie</a>: Was soll denn diese hässliche C-Lösung hier bringen?</p>
</blockquote>
<p>Nachdem er ja eh schon .c_str() genutzt hat, war mir das const char* jetzt auch recht.</p>
</blockquote>
<p>Na gut, aber warum dann nicht gleich noch strtok() reinbringen <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 />
Btw, ich wollte nicht unbedingt eine schnelle Lösung, sondern eine elegante. Und da ich aktuell gar nicht mehr mit C++ arbeite, hätte ich im produktiven Einsatz vermutlich sowas geschrieben:</p>
<pre><code>Function: Arnold
  Description: Split a Semicolon-seperated List into its components
  Return Type:
    Number:
  Parameters:
    String: pIn
    Receive Number: paOut[*]
  Static Variables:
  Local Variables:
    Number: count
    Number: index
    String: aData[*]
  Actions
    Set count = SalStrTokenize( pIn, '', ';', aData )
    Set index = 0
    While index&lt;count
      Set paOut[index] = SalStrToNumber( aData[i] )
      Set index = index+1
    Return count
</code></pre>
<p>PS <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/20068">@Michael</a>: Nein, die Lösung finde ich nicht als gemogelt <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090561</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 09 Jul 2011 09:32:21 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Sat, 09 Jul 2011 09:32:52 GMT]]></title><description><![CDATA[<p>Ich komm auf Faktor 6. Deshalb würd ich gern mal sehen, was cooky falsch macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090562</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Sat, 09 Jul 2011 09:32:52 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Sat, 09 Jul 2011 09:37:27 GMT]]></title><description><![CDATA[<p>Michael E. schrieb:</p>
<blockquote>
<p>cooky451 schrieb:</p>
<blockquote>
<p>(Deine Lösung braucht auf meinem System z.B. ~25 mal so lange wie meine.)</p>
</blockquote>
<p>Das glaub ich dir nicht so recht. Wie sieht dein Testprogramm aus?</p>
</blockquote>
<p><a href="http://ideone.com/xQ7Ni" rel="nofollow">http://ideone.com/xQ7Ni</a><br />
Wobei der Unterschied bei mir noch größer ist, da sind's ~5000 zu ~200 ms.</p>
<p>Interessant wäre es noch wie groß der Unterschied bei einem einzigen langen String ist, allerdings habe ich da nicht viel Hoffnung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090564</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 09 Jul 2011 09:37:27 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Sat, 09 Jul 2011 09:43:06 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<pre><code>Function: Arnold
  Description: Split a Semicolon-seperated List into its components
  Return Type:
    Number:
  Parameters:
    String: pIn
    Receive Number: paOut[*]
  Static Variables:
  Local Variables:
    Number: count
    Number: index
    String: aData[*]
  Actions
    Set count = SalStrTokenize( pIn, '', ';', aData )
    Set index = 0
    While index&lt;count
      Set paOut[index] = SalStrToNumber( aData[i] )
      Set index = index+1
    Return count
</code></pre>
</blockquote>
<p>Wie nennt sich das CStoll?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090566</guid><dc:creator><![CDATA[kurzefrage]]></dc:creator><pubDate>Sat, 09 Jul 2011 09:43:06 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Sat, 09 Jul 2011 09:44:24 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Michael E. schrieb:</p>
<blockquote>
<p>cooky451 schrieb:</p>
<blockquote>
<p>(Deine Lösung braucht auf meinem System z.B. ~25 mal so lange wie meine.)</p>
</blockquote>
<p>Das glaub ich dir nicht so recht. Wie sieht dein Testprogramm aus?</p>
</blockquote>
<p><a href="http://ideone.com/xQ7Ni" rel="nofollow">http://ideone.com/xQ7Ni</a><br />
Wobei der Unterschied bei mir noch größer ist, da sind's ~5000 zu ~200 ms.</p>
<p>Interessant wäre es noch wie groß der Unterschied bei einem einzigen langen String ist, allerdings habe ich da nicht viel Hoffnung.</p>
</blockquote>
<p>Das Problem bei deinem Test ist, dass der Stringstream bei vielen kurzen Strings viel zu oft Speicher allozieren muss.<br />
Deine C Lösung alloziert keinen Speicher und muss nichts kopieren.</p>
<p>Mit nem langwen String sollte der Unterschied stark schrumpfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090567</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Sat, 09 Jul 2011 09:44:24 GMT</pubDate></item><item><title><![CDATA[Reply to String teilen on Sat, 09 Jul 2011 09:44:34 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Interessant wäre es noch wie groß der Unterschied bei einem einzigen langen String ist, allerdings habe ich da nicht viel Hoffnung.</p>
</blockquote>
<p>Natürlich. die Konstruktion des stringstreams verbrennt dir sicherlich 90% der Rechenzeit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2090568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2090568</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sat, 09 Jul 2011 09:44:34 GMT</pubDate></item></channel></rss>