<?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[Character in String suchen und löschen?]]></title><description><![CDATA[<p>Ich lese aus einer Datei und fülle einen string der bei mir &quot;buf&quot; heißt:</p>
<pre><code class="language-cpp">std::ifstream file(strFile);
std::string buf;
if (!file.is_open()) { throw &quot;Error loading File&quot;; }
while (file.good() &amp;&amp; std::getline(file, buf, ';' ))
{
     if (!buf.empty())
     {
                // .... hier soll jetzt der String nach Tabulatoren und    
                // Zeilenumbrüchen durchsucht werden die dann gleich gelöscht 
                // werden sollen ....
    }
}
</code></pre>
<p>Kann mir da jemand helfen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>THX</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/184400/character-in-string-suchen-und-löschen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 23:57:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/184400.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 14 Jun 2007 20:42:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Character in String suchen und löschen? on Thu, 14 Jun 2007 20:42:56 GMT]]></title><description><![CDATA[<p>Ich lese aus einer Datei und fülle einen string der bei mir &quot;buf&quot; heißt:</p>
<pre><code class="language-cpp">std::ifstream file(strFile);
std::string buf;
if (!file.is_open()) { throw &quot;Error loading File&quot;; }
while (file.good() &amp;&amp; std::getline(file, buf, ';' ))
{
     if (!buf.empty())
     {
                // .... hier soll jetzt der String nach Tabulatoren und    
                // Zeilenumbrüchen durchsucht werden die dann gleich gelöscht 
                // werden sollen ....
    }
}
</code></pre>
<p>Kann mir da jemand helfen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>THX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1306071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1306071</guid><dc:creator><![CDATA[RunSeb]]></dc:creator><pubDate>Thu, 14 Jun 2007 20:42:56 GMT</pubDate></item><item><title><![CDATA[Reply to Character in String suchen und löschen? on Thu, 14 Jun 2007 20:52:53 GMT]]></title><description><![CDATA[<p>Hm gibt verschiedene Möglichkeiten...Du könntest auch mit der Methode find arbeiten, glaube aber, das ist schneller:</p>
<pre><code class="language-cpp">for(std::string::size_type i = 0; i &lt; buf.length(); i++)
   if(buf[i] == '\n' || buf[i] == '\t')
      buf.erase(i, 1);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1306080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1306080</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Thu, 14 Jun 2007 20:52:53 GMT</pubDate></item><item><title><![CDATA[Reply to Character in String suchen und löschen? on Thu, 14 Jun 2007 21:36:23 GMT]]></title><description><![CDATA[<p>ja, das ist super, vielen Dank!!</p>
<p>funktioniert wunderbar.</p>
<p>Wie man hier sieht:</p>
<pre><code class="language-cpp">while (file.good() &amp;&amp; std::getline(file, buf, ';' ))
</code></pre>
<p>... wird die Textdatei in den buf-string eingelesen immer bis zum semikolon. Die Anzahl der Durchläufe dieser while-Schleife wird also durch die Anzahl der Semikolons im File bestimmt.<br />
Jetzt ist das Problem das ich vorher nicht weis wieviele Strings das werden. Ich müsste jetzt jedesmal nachdem ich die Tabs und Zeilenumbrüche aus &quot;buf&quot; rausgeschmissen habe den String irgendwie irgendwo dynamisch speichern. Jeden einzeln in einen seperaten String. Wie könnte ich das am besten anstellen? Hat da jemand einen Rat für mich!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1306131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1306131</guid><dc:creator><![CDATA[RunSeb]]></dc:creator><pubDate>Thu, 14 Jun 2007 21:36:23 GMT</pubDate></item><item><title><![CDATA[Reply to Character in String suchen und löschen? on Thu, 14 Jun 2007 21:52:06 GMT]]></title><description><![CDATA[<p><em>std::vector</em> eventuell ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1306139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1306139</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Thu, 14 Jun 2007 21:52:06 GMT</pubDate></item><item><title><![CDATA[Reply to Character in String suchen und löschen? on Thu, 14 Jun 2007 23:46:18 GMT]]></title><description><![CDATA[<p>CodeFinder schrieb:</p>
<blockquote>
<p>Hm gibt verschiedene Möglichkeiten...Du könntest auch mit der Methode find arbeiten, glaube aber, das ist schneller:</p>
<pre><code class="language-cpp">for(std::string::size_type i = 0; i &lt; buf.length(); i++)
   if(buf[i] == '\n' || buf[i] == '\t')
      buf.erase(i, 1);
</code></pre>
</blockquote>
<p>remove_copy_if böte sich auch an.</p>
<pre><code class="language-cpp">buf.assign(buf.begin(), remove_copy_if(buf.begin(), buf.end(), buf.begin(), static_cast&lt;int(*)(int)&gt;(isspace));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1306182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1306182</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Thu, 14 Jun 2007 23:46:18 GMT</pubDate></item><item><title><![CDATA[Reply to Character in String suchen und löschen? on Fri, 15 Jun 2007 08:13:55 GMT]]></title><description><![CDATA[<p>Dann könnte man auch noch kürzeren Code mit remove_if schreiben (da Quelle und Ziel identisch sind):</p>
<pre><code class="language-cpp">buf.erase(remove_if(buf.begin(), buf.end(), static_cast&lt;int(*)(int)&gt;(isspace)), buf.end());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1306319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1306319</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Fri, 15 Jun 2007 08:13:55 GMT</pubDate></item><item><title><![CDATA[Reply to Character in String suchen und löschen? on Fri, 15 Jun 2007 08:40:28 GMT]]></title><description><![CDATA[<p>RunSeb schrieb:</p>
<blockquote>
<p>ja, das ist super, vielen Dank!!<br />
funktioniert wunderbar.</p>
</blockquote>
<p>Es gibt noch \r \v \b \f usw.<br />
Es können mehrere hintereinander stehen: \n\n\n\t\t\t</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

int main()
{
	string str = &quot;\n\n\n\t\t\t\fH\v\ne\tl\nl\to\b \n\tW\n\no\trl\td&quot;;
	cout &lt;&lt; str &lt;&lt; endl;
	for ( int i = 0; i &lt; str.size(); i++ )
	{
		if ( str.at(i) &lt; ' ' )
		{   // Entfernt alle nicht druckbaren Zeichen ( bis ASCII 31(dez) )
			str.erase(i,1); i -= 1;
		}
	}
	cout &lt;&lt; str &lt;&lt; endl;
	return 0;
}
</code></pre>
<p><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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1306341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1306341</guid><dc:creator><![CDATA[ach ja ?]]></dc:creator><pubDate>Fri, 15 Jun 2007 08:40:28 GMT</pubDate></item><item><title><![CDATA[Reply to Character in String suchen und löschen? on Tue, 19 Jun 2007 10:52:54 GMT]]></title><description><![CDATA[<p>jap, das geht.</p>
<p>Jetzt will ich wenn ein Tabulator gefunden wird den mit einem Leerzeichen ersetzen.</p>
<p>Funktioniert das mit replace(...) ?? Wenn ja wie?</p>
<p>So gehts nicht, komme mit den Parametern nicht klar!</p>
<pre><code class="language-cpp">if ( buf.at(i) &lt; ' ' )
{   
	buf.replace(i,'\n'); 
        i -= 1;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1308973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1308973</guid><dc:creator><![CDATA[RunSeb]]></dc:creator><pubDate>Tue, 19 Jun 2007 10:52:54 GMT</pubDate></item><item><title><![CDATA[Reply to Character in String suchen und löschen? on Tue, 19 Jun 2007 11:38:16 GMT]]></title><description><![CDATA[<p>Um ein Zeichen zu ersetzen, brauchst du einfach</p>
<pre><code class="language-cpp">buf[i] = '\n'; \\ (oder ' ' denn das ist ein Leerzeichen -)
</code></pre>
<p>zu schreiben.</p>
<p>P.S Die Anweisung 'i -= 1' ist überflüssig bei dir, da du damit ja noch mal dieselbe Position (in der nicht geposteten Schleife) abarbeiten würdest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1309033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1309033</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Tue, 19 Jun 2007 11:38:16 GMT</pubDate></item><item><title><![CDATA[Reply to Character in String suchen und löschen? on Tue, 19 Jun 2007 11:59:10 GMT]]></title><description><![CDATA[<p>Ja, danke, ich habs dann doch schon mit replace hinbekommen gehabt:</p>
<pre><code class="language-cpp">replace(buf.begin(), buf.end(), '\t', ' ');
</code></pre>
<p>Th schrieb:</p>
<blockquote>
<p>P.S Die Anweisung 'i -= 1' ist überflüssig bei dir, da du damit ja noch mal dieselbe Position (in der nicht geposteten Schleife) abarbeiten würdest.</p>
</blockquote>
<p>Nein ich glaube nicht, da bei mir auch mehrere Tabulatoren gelöscht werden sollen die im STring hintereinander stehen. Wenn ich das weglasse werden nicht alle gelöscht. Wenn er einen Tabulator z.B. findet löscht er den und rückt den String quasi von hinten auf. Steht an der nächsten Stelle wieder ein Tab dann übersieht er den dann sonst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1309061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1309061</guid><dc:creator><![CDATA[RunSeb]]></dc:creator><pubDate>Tue, 19 Jun 2007 11:59:10 GMT</pubDate></item><item><title><![CDATA[Reply to Character in String suchen und löschen? on Tue, 19 Jun 2007 19:02:08 GMT]]></title><description><![CDATA[<p>CodeFinder schrieb:</p>
<blockquote>
<p><em>std::vector</em> eventuell ?</p>
</blockquote>
<p>Ich bekomme 4 komische Warnungen wenn ich die strings in ein std::vector ablegen will. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<pre><code class="language-cpp">#include &lt;vector&gt;

std::vector&lt;string&gt; gl;
std::ifstream file(strFile);
std::string buf;

if (!file.is_open()) { throw &quot;Error loading File&quot;; }
while (file.good() &amp;&amp; std::getline(file, buf, ';' ))
{
     gl.push_back( buf ); 
}
</code></pre>
<blockquote>
<p>1.: warning C4786: 'std::reverse_iterator&lt;std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; const *,std::basic_string&lt;char,std::char_<br />
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; const &amp;,std::basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; const *,int&gt;' : Bezeichner wurde auf '255' Zeichen in den Debug-Inf<br />
ormationen reduziert</p>
<p>2 : warning C4786: 'std::reverse_iterator&lt;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<br />
&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;' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen reduzie<br />
rt</p>
<p>3 : warning C4786: 'std::vector&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;::<br />
vector&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;' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen verkürzt</p>
<p>4 : warning C4786: 'std::vector&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;::<br />
~vector&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;' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen verkürzt</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Weis jemand was das ist und/oder was ich falsch mache und wie es richtig geht?<br />
THX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1309364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1309364</guid><dc:creator><![CDATA[RunSeb]]></dc:creator><pubDate>Tue, 19 Jun 2007 19:02:08 GMT</pubDate></item><item><title><![CDATA[Reply to Character in String suchen und löschen? on Wed, 20 Jun 2007 06:54:39 GMT]]></title><description><![CDATA[<p>Das sind Warnungen, die du im Normalbetrieb ignorieren kannst. Der Debugger von MSVC kommt nicht mit zu langen Bezeichnern klar, deswegen werden diese Namen für ihn etwas gekürzt.</p>
<p>(und die genannten Ungetüme kommen heraus, wenn du vector&lt;string&gt;::reverse_iterator oder den Ctor von vector&lt;string&gt; mit ihrem vollen Namen nennst)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1309592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1309592</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 20 Jun 2007 06:54:39 GMT</pubDate></item></channel></rss>