<?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[split]]></title><description><![CDATA[<p>hallo zusammen.</p>
<p>ich habe mir mal eine split funktion geschrieben, damit ich das thema mal verstehe.</p>
<p>nun habe ich aber ein problem.</p>
<p>wenn ich splitten möchte und dann folgendes habe:</p>
<pre><code class="language-cpp">Split(&quot;test\t&quot;, &quot;\t&quot;, 0);

vector&lt;string&gt; Split(string data, string delimeter, int count) {

	if(!count) {

		count = StrCnt(data, delimeter);

	}

	vector&lt;string&gt; arg;

	for(int i = 0, pos = 0; i &lt;= count; i++) {
		pos = data.find(delimeter);
		arg.push_back(data.substr(0, pos));
		data = data.substr(pos+delimeter.length(), data.length());

	}

	return arg;

}

int StrCnt(string data, string search) {

	int count = 0, pos;

	for(int i = 0; !i;) {

		pos = data.find(search);

		if(pos &gt;= 0) {

				count++;
				data = data.substr(pos+search.length(), data.length());

		}
		else {

				i++;

		}
	}

	return count;

}
</code></pre>
<p>bekomme ich eine Fehlermeldung und in der schleife, in der die sachen gesplittet werden, wird abgebrochen.</p>
<p>wie kann ich das beheben?</p>
<p>also am ende steht ja ein tabulator-steuerzeichen, nach dem ich trennen möchte.<br />
dann sollte es aber so sein, dass ebenfalls wieder 2 einträge im vector herauskommen:</p>
<ul>
<li>&quot;test&quot;</li>
<li>&quot;&quot;</li>
</ul>
<p>also das zeichen, nach dem getrennt wurde fällt ja weg und danach noch einen leeren string zurückgeben.</p>
<p>gruß anno</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/220142/split</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 11:00:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/220142.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 12 Aug 2008 12:37:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to split on Tue, 12 Aug 2008 12:43:26 GMT]]></title><description><![CDATA[<p>hallo zusammen.</p>
<p>ich habe mir mal eine split funktion geschrieben, damit ich das thema mal verstehe.</p>
<p>nun habe ich aber ein problem.</p>
<p>wenn ich splitten möchte und dann folgendes habe:</p>
<pre><code class="language-cpp">Split(&quot;test\t&quot;, &quot;\t&quot;, 0);

vector&lt;string&gt; Split(string data, string delimeter, int count) {

	if(!count) {

		count = StrCnt(data, delimeter);

	}

	vector&lt;string&gt; arg;

	for(int i = 0, pos = 0; i &lt;= count; i++) {
		pos = data.find(delimeter);
		arg.push_back(data.substr(0, pos));
		data = data.substr(pos+delimeter.length(), data.length());

	}

	return arg;

}

int StrCnt(string data, string search) {

	int count = 0, pos;

	for(int i = 0; !i;) {

		pos = data.find(search);

		if(pos &gt;= 0) {

				count++;
				data = data.substr(pos+search.length(), data.length());

		}
		else {

				i++;

		}
	}

	return count;

}
</code></pre>
<p>bekomme ich eine Fehlermeldung und in der schleife, in der die sachen gesplittet werden, wird abgebrochen.</p>
<p>wie kann ich das beheben?</p>
<p>also am ende steht ja ein tabulator-steuerzeichen, nach dem ich trennen möchte.<br />
dann sollte es aber so sein, dass ebenfalls wieder 2 einträge im vector herauskommen:</p>
<ul>
<li>&quot;test&quot;</li>
<li>&quot;&quot;</li>
</ul>
<p>also das zeichen, nach dem getrennt wurde fällt ja weg und danach noch einen leeren string zurückgeben.</p>
<p>gruß anno</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563304</guid><dc:creator><![CDATA[anno]]></dc:creator><pubDate>Tue, 12 Aug 2008 12:43:26 GMT</pubDate></item><item><title><![CDATA[Reply to split on Tue, 12 Aug 2008 12:42:44 GMT]]></title><description><![CDATA[<p>Und die Fehlermeldung lautet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563309</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 12 Aug 2008 12:42:44 GMT</pubDate></item><item><title><![CDATA[Reply to split on Tue, 12 Aug 2008 12:54:14 GMT]]></title><description><![CDATA[<p>ok, man muss nach &quot;\\t&quot; splitten.</p>
<p>dann kommt die meldung:</p>
<p>&quot;exception der klasse std::out_of_range&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563318</guid><dc:creator><![CDATA[anno]]></dc:creator><pubDate>Tue, 12 Aug 2008 12:54:14 GMT</pubDate></item><item><title><![CDATA[Reply to split on Tue, 12 Aug 2008 13:32:00 GMT]]></title><description><![CDATA[<blockquote>
<p>vector&lt;string&gt; Split(string data, string delimeter, int count) {</p>
</blockquote>
<p>Da ist noch ein Schreibfehler: Es sollte vermutlich <strong>delhimeter</strong> heissen.<br />
Das sind nämlich die Meter in Indien...<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563364</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Tue, 12 Aug 2008 13:32:00 GMT</pubDate></item><item><title><![CDATA[Reply to split on Tue, 12 Aug 2008 13:32:58 GMT]]></title><description><![CDATA[<p>Zum eigentlichen Problem:<br />
Das lässt sich ganz bestimmt schnell lösen, wenn Du den Debugger benutzt.<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563365</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Tue, 12 Aug 2008 13:32:58 GMT</pubDate></item><item><title><![CDATA[Reply to split on Tue, 12 Aug 2008 13:38:22 GMT]]></title><description><![CDATA[<p>ja habe ich schon, allerdings kapiere ich nicht, warum im 2. durchlauf der schleife ein -1 als wert herauskommt bei der pos variable.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563374</guid><dc:creator><![CDATA[anno]]></dc:creator><pubDate>Tue, 12 Aug 2008 13:38:22 GMT</pubDate></item><item><title><![CDATA[Reply to split on Tue, 12 Aug 2008 13:40:25 GMT]]></title><description><![CDATA[<p>Dann lies mal bei der Doku von std::string::find(..) nach.<br />
Ich erspare dir mal das suchen:<br />
<a href="http://www.cplusplus.com/reference/string/string/find.html" rel="nofollow">http://www.cplusplus.com/reference/string/string/find.html</a><br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563376</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Tue, 12 Aug 2008 13:40:25 GMT</pubDate></item><item><title><![CDATA[Reply to split on Tue, 12 Aug 2008 13:59:54 GMT]]></title><description><![CDATA[<p>na ich weiß jetzt nicht genau, aber das könnte eine lösung sein:</p>
<pre><code class="language-cpp">for(int i = 0, pos = 0; i &lt;= count; i++)
		{
				pos = data.find(delimeter);
				if(pos &lt; 0) {

					arg.push_back(&quot;&quot;);

				}
				else {
					arg.push_back(data.substr(0, pos));
					data = data.substr(pos+delimeter.length(), data.length());
				}
		}
</code></pre>
<p>oder was meint ihr dazu?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563387</guid><dc:creator><![CDATA[anno]]></dc:creator><pubDate>Tue, 12 Aug 2008 13:59:54 GMT</pubDate></item><item><title><![CDATA[Reply to split on Tue, 12 Aug 2008 14:01:13 GMT]]></title><description><![CDATA[<p>ne, geht leider auch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563403</guid><dc:creator><![CDATA[anno]]></dc:creator><pubDate>Tue, 12 Aug 2008 14:01:13 GMT</pubDate></item><item><title><![CDATA[Reply to split on Tue, 12 Aug 2008 14:12:05 GMT]]></title><description><![CDATA[<p>nee, echt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563409</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Tue, 12 Aug 2008 14:12:05 GMT</pubDate></item><item><title><![CDATA[Reply to split on Tue, 12 Aug 2008 14:20:56 GMT]]></title><description><![CDATA[<p>simon.gysi schrieb:</p>
<blockquote>
<p>nee, echt?</p>
</blockquote>
<p>ja dann nenn mir mal deine lösung, bitte.</p>
<p>ich komme icht drauf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563415</guid><dc:creator><![CDATA[anno]]></dc:creator><pubDate>Tue, 12 Aug 2008 14:20:56 GMT</pubDate></item><item><title><![CDATA[Reply to split on Tue, 12 Aug 2008 20:39:47 GMT]]></title><description><![CDATA[<p>2 Funktionen und du kannst jetzt selbst rausfinden, was anderst ist und wie sie funktionierne.</p>
<pre><code class="language-cpp">std::vector&lt;std::string&gt; split (std::string data, char del)
{
	std::replace (data.begin(),data.end(),del,' ');
	std::stringstream s (data);
	std::string word;
	std::vector&lt;std::string&gt; v;
	while(s &gt;&gt; word)
		v.push_back (word);
	return v;
}

std::vector&lt;std::string&gt; split2 (std::string data, char del)
{
	std::vector&lt;std::string&gt; v;
	std::string::iterator it = std::find (data.begin (), data.end (), del);
	std::string::iterator last = data.begin ();
	while(it != data.end ())
	{
		std::string name = std::string (last,it);
		v.push_back (name);
		last = ++it;
		it = std::find (it, data.end(), del);
	}
	return v;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1563658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563658</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 12 Aug 2008 20:39:47 GMT</pubDate></item></channel></rss>