<?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[Textfile einlesen und brackets auslassen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich will ein txt-File einlesen. Es steht z. B. (mit Leerzeichen getrennt)</p>
<p>A [832]<br />
c [32]<br />
d [24]<br />
.<br />
.</p>
<p>Die character (ch) werden eingelesen und die Zahlen sollten das auch, nur machen mir die brackets noch Probleme.</p>
<pre><code class="language-cpp">while (in &amp;&amp; !in.eof() &amp;&amp; in&gt;&gt;ch&gt;&gt;cost) {
	s.insert(std::pair&lt;int, Node*&gt;(cost, new Node(cost, ch)));
</code></pre>
<p>Ich könnte die brackets mit Zahlen als string einlesen und mit ner for-Schleife manuell entfernen lassen. Ich habe in der c++ Std.bib die Funktion basic_string&amp; erase(size_type pos = 0, size_type n = npos);<br />
gefunden, die dann 2mal auferufen würde. Hat jmd. eine andere Lösung?</p>
<p>Gruß<br />
Thomas</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/308183/textfile-einlesen-und-brackets-auslassen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 06 Aug 2026 02:04:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/308183.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Sep 2012 13:39:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Textfile einlesen und brackets auslassen on Mon, 17 Sep 2012 13:39:25 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich will ein txt-File einlesen. Es steht z. B. (mit Leerzeichen getrennt)</p>
<p>A [832]<br />
c [32]<br />
d [24]<br />
.<br />
.</p>
<p>Die character (ch) werden eingelesen und die Zahlen sollten das auch, nur machen mir die brackets noch Probleme.</p>
<pre><code class="language-cpp">while (in &amp;&amp; !in.eof() &amp;&amp; in&gt;&gt;ch&gt;&gt;cost) {
	s.insert(std::pair&lt;int, Node*&gt;(cost, new Node(cost, ch)));
</code></pre>
<p>Ich könnte die brackets mit Zahlen als string einlesen und mit ner for-Schleife manuell entfernen lassen. Ich habe in der c++ Std.bib die Funktion basic_string&amp; erase(size_type pos = 0, size_type n = npos);<br />
gefunden, die dann 2mal auferufen würde. Hat jmd. eine andere Lösung?</p>
<p>Gruß<br />
Thomas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2251955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2251955</guid><dc:creator><![CDATA[tommy8142]]></dc:creator><pubDate>Mon, 17 Sep 2012 13:39:25 GMT</pubDate></item><item><title><![CDATA[Reply to Textfile einlesen und brackets auslassen on Mon, 17 Sep 2012 13:42:58 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/u100590" rel="nofollow">Martin Richter</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/f1" rel="nofollow">MFC (Visual C++)</a> in das Forum <a href="http://www.c-plusplus.net/forum/f15" rel="nofollow">C++ (auch C++0x und C++11)</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2251958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2251958</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Mon, 17 Sep 2012 13:42:58 GMT</pubDate></item><item><title><![CDATA[Reply to Textfile einlesen und brackets auslassen on Mon, 17 Sep 2012 13:49:26 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">char dummy;

/* ... */ in &gt;&gt; ch &gt;&gt; dummy &gt;&gt; cost &gt;&gt; dummy /* ... */
</code></pre>
<p>Müsste doch gehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2251962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2251962</guid><dc:creator><![CDATA[fsdfdsf]]></dc:creator><pubDate>Mon, 17 Sep 2012 13:49:26 GMT</pubDate></item><item><title><![CDATA[Reply to Textfile einlesen und brackets auslassen on Mon, 17 Sep 2012 14:26:26 GMT]]></title><description><![CDATA[<p>oder so:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;map&gt;

struct Node
{
    int cost_;
    char ch_;
};
std::istream&amp; operator&gt;&gt;( std::istream&amp; in, Node&amp; nd )
{   // Format: ch [ cost ]
    char lbracket, rbracket;
    if( in &gt;&gt; nd.ch_ &gt;&gt; lbracket &gt;&gt; nd.cost_ &gt;&gt; rbracket 
        &amp;&amp; (lbracket != '[' || rbracket != ']') )
        in.setstate( std::ios_base::failbit );
    return in;
}

int main()
{
    using namespace std;
    map&lt; int, Node* &gt; s;
    ifstream in(&quot;input.txt&quot;);
    for( Node nd; in &gt;&gt; nd; ) 
    {
        s.insert( std::pair&lt;int, Node*&gt;( nd.cost_, new Node(nd) ) );
    }
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2251981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2251981</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Mon, 17 Sep 2012 14:26:26 GMT</pubDate></item><item><title><![CDATA[Reply to Textfile einlesen und brackets auslassen on Mon, 17 Sep 2012 14:38:19 GMT]]></title><description><![CDATA[<p>Irgendwie finde ich es höchst unheimlich, in einer nicht-multi-map rohe Zeiger auf dynamische Objekte zu speichern. Das schreit geradezu nach Speicherlöchern. Mir schwant, der Threadersteller möchte gar kein new, weiß nur nicht, dass es ohne viel besser geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2251986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2251986</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 17 Sep 2012 14:38:19 GMT</pubDate></item><item><title><![CDATA[Reply to Textfile einlesen und brackets auslassen on Tue, 18 Sep 2012 08:02:38 GMT]]></title><description><![CDATA[<p>Danke erstmal für die schnellen Antworten.</p>
<blockquote>
<p>Irgendwie finde ich es höchst unheimlich, in einer nicht-multi-map rohe Zeiger auf dynamische Objekte zu speichern. Das schreit geradezu nach Speicherlöchern. Mir schwant, der Threadersteller möchte gar kein new, weiß nur nicht, dass es ohne viel besser geht.</p>
</blockquote>
<pre><code class="language-cpp">std::multimap&lt;int, Node*&gt; s;
</code></pre>
<p>1. Warum eine nicht multi-map?</p>
<p>2. Leider habe ich noch nicht viel mit Smart Pointern gearbeitet. Danke für den Anstoß!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2252198</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252198</guid><dc:creator><![CDATA[tommy8142]]></dc:creator><pubDate>Tue, 18 Sep 2012 08:02:38 GMT</pubDate></item><item><title><![CDATA[Reply to Textfile einlesen und brackets auslassen on Tue, 18 Sep 2012 08:11:00 GMT]]></title><description><![CDATA[<p>tommy8142 schrieb:</p>
<blockquote>
<p>1. Warum eine nicht multi-map?</p>
</blockquote>
<p>weil bei einer Datei wie dieser</p>
<pre><code>A [832]
c [32]
d [24] 
e [832]
</code></pre>
<p>in der zweimal der gleiche Schlüssel [832] auftaucht, der erste Eintrag - und damit der Node* - durch den zweiten überschrieben wird, wenn Du eine map verwendest. D.h. Du bekommst sofort ein MemoryLeak.<br />
Was spricht gegen std::map&lt; int, Node &gt;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2252203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252203</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Tue, 18 Sep 2012 08:11:00 GMT</pubDate></item><item><title><![CDATA[Reply to Textfile einlesen und brackets auslassen on Tue, 18 Sep 2012 08:45:37 GMT]]></title><description><![CDATA[<p>Also wenn ich &quot;C++ lernen und professionell anwenden&quot; richtig verstehe</p>
<blockquote>
<p>Multimap: Es kann mehrere Objekte mit demselben Schlüssel geben.</p>
</blockquote>
<p>dann kommt eine map nicht infrage, weil diese mir dann die Schlüssel überschreibt.<br />
Class node besteht aus:</p>
<pre><code class="language-cpp">class Node{
	unsigned int _cost;
	char _ch;
	Node *_nLeft, *_nRight;
public:
....
};
</code></pre>
<p>Ich verstehe also nicht warum eine map nicht in Frage kommt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2252216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252216</guid><dc:creator><![CDATA[tommy8142]]></dc:creator><pubDate>Tue, 18 Sep 2012 08:45:37 GMT</pubDate></item><item><title><![CDATA[Reply to Textfile einlesen und brackets auslassen on Tue, 18 Sep 2012 08:54:42 GMT]]></title><description><![CDATA[<p>tommy8142 schrieb:</p>
<blockquote>
<p>dann kommt eine map nicht infrage, weil diese mir dann die Schlüssel überschreibt.</p>
</blockquote>
<p>Nein, eine map überschreibt nichts. <em>Du</em> überschreibst einen ggf. vorhandenen Wert, wenn du über den operator[] schreibend darauf zugreifst. Ein insert() schlägt einfach fehl, d.h. es macht nichts (und liefert ggf. ein false), wenn ein entsprechender Key schon vorhanden ist. (Wenn du daraus keine Konsequenzen ziehst und einfach davon ausgehst, dass du das übergebene Element in der map gesichert hast, kriegst du in dem Fall natürlich trotzdem Speicherlecks)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2252223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252223</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 18 Sep 2012 08:54:42 GMT</pubDate></item><item><title><![CDATA[Reply to Textfile einlesen und brackets auslassen on Tue, 18 Sep 2012 09:08:58 GMT]]></title><description><![CDATA[<p>Verwend z.B. std::unique_ptr statt roher Zeiger und plötzlich keine Speicherlöcher mehr...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2252232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2252232</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Tue, 18 Sep 2012 09:08:58 GMT</pubDate></item></channel></rss>