<?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[remove_copy]]></title><description><![CDATA[<p>Hallo,</p>
<p>hab mal wieder eine Frage, und zwar will ich aus einem Text die Leerzeichen entfernen, und die Einzelzeilen als String einen Vektor speichern. Hab dazu auch schon in der Suche was gefunden, aber es hakt trotzdem. Wenn der Code wie unten aussieht, funktioniert die remove_copy-Funktion:</p>
<pre><code class="language-cpp">while(!file.eof())					
	{ 
getline(file, line);	// Zeilenweise einlesen
string b;
remove_copy (line.begin(), line.end(), back_inserter(b), ' '); 
cout&lt;&lt;b&lt;&lt;endl;
stringvektor.push_back(b);	
z++;			// Zählt Anzahl der Zeilen mit
	}
</code></pre>
<p>Mich macht nur stutzig, ob da alles mit rechten Dingen zugeht, dass wenn ich den string b außerhalb der Klammer definiere (entweder string b; oder std::string b; ) kommt ein wirres Textzeug heraus. So funktionierts nicht:</p>
<pre><code class="language-cpp">std::string b;
while(!file.eof())					
	{ 
getline(file, line);	// Zeilenweise einlesen
remove_copy (line.begin(), line.end(), back_inserter(b), ' '); 
cout&lt;&lt;b&lt;&lt;endl;
stringvektor.push_back(b);	
z++;			// Zählt Anzahl der Zeilen mit
	}
</code></pre>
<p>Wäre nett wenn mir jemand helfen würde, ist eventuell meine remove_copy-Funktion falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/258640/remove_copy</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 04:57:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/258640.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Jan 2010 10:05:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to remove_copy on Wed, 13 Jan 2010 10:05:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>hab mal wieder eine Frage, und zwar will ich aus einem Text die Leerzeichen entfernen, und die Einzelzeilen als String einen Vektor speichern. Hab dazu auch schon in der Suche was gefunden, aber es hakt trotzdem. Wenn der Code wie unten aussieht, funktioniert die remove_copy-Funktion:</p>
<pre><code class="language-cpp">while(!file.eof())					
	{ 
getline(file, line);	// Zeilenweise einlesen
string b;
remove_copy (line.begin(), line.end(), back_inserter(b), ' '); 
cout&lt;&lt;b&lt;&lt;endl;
stringvektor.push_back(b);	
z++;			// Zählt Anzahl der Zeilen mit
	}
</code></pre>
<p>Mich macht nur stutzig, ob da alles mit rechten Dingen zugeht, dass wenn ich den string b außerhalb der Klammer definiere (entweder string b; oder std::string b; ) kommt ein wirres Textzeug heraus. So funktionierts nicht:</p>
<pre><code class="language-cpp">std::string b;
while(!file.eof())					
	{ 
getline(file, line);	// Zeilenweise einlesen
remove_copy (line.begin(), line.end(), back_inserter(b), ' '); 
cout&lt;&lt;b&lt;&lt;endl;
stringvektor.push_back(b);	
z++;			// Zählt Anzahl der Zeilen mit
	}
</code></pre>
<p>Wäre nett wenn mir jemand helfen würde, ist eventuell meine remove_copy-Funktion falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1838017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838017</guid><dc:creator><![CDATA[MikeBb]]></dc:creator><pubDate>Wed, 13 Jan 2010 10:05:42 GMT</pubDate></item><item><title><![CDATA[Reply to remove_copy on Wed, 13 Jan 2010 10:16:25 GMT]]></title><description><![CDATA[<p>Warum nimmst du nicht<a href="http://www.cplusplus.com/reference/algorithm/remove/" rel="nofollow"> <code>std::remove()</code> </a>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1838026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838026</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 13 Jan 2010 10:16:25 GMT</pubDate></item><item><title><![CDATA[Reply to remove_copy on Wed, 13 Jan 2010 10:31:22 GMT]]></title><description><![CDATA[<p>Da dachte ich ist das Problem, dass er mir die aktuelle Zeile nochmal überschreibt (eben soweit nach links schiebt bis alle Leerzeichen weg sind), und dann kann es passieren dass am Ende der Zeile &quot;alte&quot; Zeichen auftauchen, die nicht überschrieben wurden.</p>
<p>Aber es muss doch mit remove_copy auch gehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1838033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838033</guid><dc:creator><![CDATA[MikeBb]]></dc:creator><pubDate>Wed, 13 Jan 2010 10:31:22 GMT</pubDate></item><item><title><![CDATA[Reply to remove_copy on Wed, 13 Jan 2010 10:47:10 GMT]]></title><description><![CDATA[<p>Was heisst wirres Textzeug?<br />
Dass das nicht das macht, was du willst ist klar, weil b nie gelöscht wird und daher mit jeder Zeile länger wird.<br />
Daher funktioniert nur die erste Version und ich schliesse mich Nexus an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1838041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838041</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Wed, 13 Jan 2010 10:47:10 GMT</pubDate></item><item><title><![CDATA[Reply to remove_copy on Wed, 13 Jan 2010 10:59:36 GMT]]></title><description><![CDATA[<p>MikeBb schrieb:</p>
<blockquote>
<p>Da dachte ich ist das Problem, dass er mir die aktuelle Zeile nochmal überschreibt (eben soweit nach links schiebt bis alle Leerzeichen weg sind), und dann kann es passieren dass am Ende der Zeile &quot;alte&quot; Zeichen auftauchen, die nicht überschrieben wurden.</p>
</blockquote>
<p>Dafür gibt std::remove einen Iterator auf das erste &quot;alte&quot; Zeichen (sprich: das Ende des Ergebnisbereichs) zurück, den Du zusammen mit dem Ende-Iterator an die Methode std::string::erase(Iter, Iter) übergeben kannst, um den Rest zu entfernen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1838045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838045</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 13 Jan 2010 10:59:36 GMT</pubDate></item><item><title><![CDATA[Reply to remove_copy on Wed, 13 Jan 2010 12:26:05 GMT]]></title><description><![CDATA[<p>Also irgendwie kapier ichs nicht, jetzt hab ichs abgeändert. Jetzt kommen zwar meine Zeilen schön nacheinander aber auch nur manchmal links angeordnet (der einzulesende Text hat viele Leerzeichen in jeder Zeile bis der Text anfängt). Stimmt wahrscheinlich wieder was nicht...</p>
<pre><code class="language-cpp">while(!file.eof())					
	{ 
		getline(file, line);			// Zeilenweise einlesen
		remove (line.begin(), line.end(), ' '); 
		cout&lt;&lt;line&lt;&lt;endl;
		stringvec.push_back(line);			// push_back: Zeilen werden hintereinander hinzugefuegt 

		z++;							// Zählt Anzahl der Zeilen mit

	}
</code></pre>
<p>Und das mit dem erase wegen der alten Zeichen krieg ich auch nicht hin.<br />
Pleas help me!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1838107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838107</guid><dc:creator><![CDATA[MikeBb]]></dc:creator><pubDate>Wed, 13 Jan 2010 12:26:05 GMT</pubDate></item><item><title><![CDATA[Reply to remove_copy on Wed, 13 Jan 2010 13:51:55 GMT]]></title><description><![CDATA[<p>Hat irgendjemand ne Idee wie ich des hinkrieg? Ich brauch echt Hilfe...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1838160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838160</guid><dc:creator><![CDATA[MikeBb]]></dc:creator><pubDate>Wed, 13 Jan 2010 13:51:55 GMT</pubDate></item><item><title><![CDATA[Reply to remove_copy on Wed, 13 Jan 2010 14:04:04 GMT]]></title><description><![CDATA[<p>Habs doch hinbekommen.</p>
<pre><code class="language-cpp">string::size_type pos = 0;
		bool spacesLeft = true;

		while( spacesLeft )
		{
		pos = line.find(&quot; &quot;);
		if( pos != string::npos )
		{line.erase( pos, 1 );}
		else
		{spacesLeft = false;}
		}

		cout&lt;&lt;line&lt;&lt;endl;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1838171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838171</guid><dc:creator><![CDATA[MikeBb]]></dc:creator><pubDate>Wed, 13 Jan 2010 14:04:04 GMT</pubDate></item><item><title><![CDATA[Reply to remove_copy on Wed, 13 Jan 2010 14:55:31 GMT]]></title><description><![CDATA[<p>Mit dem Tip &quot;zusammen mit dem Ende-Iterator an die Methode std::string::erase(Iter, Iter) übergeben kannst&quot;, würde das ungefähr so aussehen:</p>
<pre><code class="language-cpp">while(!file.eof())                   
{
  getline(file, line);
  string::iterator it = remove (line.begin(), line.end(), ' ');
  line.erase(it, content.end());
  stringvec.push_back(line);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1838214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1838214</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Wed, 13 Jan 2010 14:55:31 GMT</pubDate></item></channel></rss>