<?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[Datei auslesen mit Inserter]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine Textdatei, in der beliebig viele durch Leerzeichen getrennte Ganzzahlen stehen. Diese sollen nun in einen vector&lt;int&gt; übertragen werden.</p>
<p>Gibt es dafür eine schöne Möglichkeit mit back_inserter oder muss ich das mit einer temporären Variable und push_back lösen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/301483/datei-auslesen-mit-inserter</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 21:49:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/301483.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 28 Mar 2012 13:55:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datei auslesen mit Inserter on Wed, 28 Mar 2012 13:55:59 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine Textdatei, in der beliebig viele durch Leerzeichen getrennte Ganzzahlen stehen. Diese sollen nun in einen vector&lt;int&gt; übertragen werden.</p>
<p>Gibt es dafür eine schöne Möglichkeit mit back_inserter oder muss ich das mit einer temporären Variable und push_back lösen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196210</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Wed, 28 Mar 2012 13:55:59 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen mit Inserter on Wed, 28 Mar 2012 14:01:28 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">std::vector&lt;int&gt; v;
std::ifstream is(&quot;foo.txt&quot;);
std::copy(std::istream_iterator&lt;int&gt;(is), std::istream_iterator&lt;int&gt;(), std::back_inserter(v));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2196218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196218</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 28 Mar 2012 14:01:28 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen mit Inserter on Wed, 28 Mar 2012 14:02:32 GMT]]></title><description><![CDATA[<p>Du brauchst <a href="http://www.cplusplus.com/reference/std/iterator/back_inserter/" rel="nofollow">back_inserter</a>, <a href="http://www.cplusplus.com/reference/algorithm/copy/" rel="nofollow">copy</a> und <a href="http://www.cplusplus.com/reference/std/iterator/istream_iterator/" rel="nofollow">istream_iterator</a>, dann kannst du damit einen Einzeiler schreiben. Die genaue Form lasse ich dir erst einmal zur Übung, die Beispiele zu den Links zeigen schon fast alles was du brauchst, du musst es nur noch richtig kombinieren.</p>
<p>edit: Zu spät. Siehe Pis Zeile 3.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196220</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 28 Mar 2012 14:02:32 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen mit Inserter on Wed, 28 Mar 2012 15:02:06 GMT]]></title><description><![CDATA[<p>es geht auch ohne back_inserter ..</p>
<pre><code class="language-cpp">std::ifstream is( &quot;foo.txt&quot; );
    std::vector&lt;int&gt; v( (std::istream_iterator&lt; int &gt;( is )), std::istream_iterator&lt; int &gt;() );
</code></pre>
<p>Bem.: die extra-Klammer um den ersten Parameter ist bei einigen Compilern notwendig.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196245</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Wed, 28 Mar 2012 15:02:06 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen mit Inserter on Wed, 28 Mar 2012 15:07:04 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<p>Bem.: die extra-Klammer um den ersten Parameter ist bei einigen Compilern notwendig.</p>
</blockquote>
<p>Schreib doch gleich MSVC hin. Ein weiterer Punkt für mich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196250</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 28 Mar 2012 15:07:04 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen mit Inserter on Wed, 28 Mar 2012 22:24:39 GMT]]></title><description><![CDATA[<p>Danke für den Hinweis auf istream_iterator.</p>
<p>Mit int klappt es auch, aber bei z.B. pair&lt;int, string&gt; gibt es einen Compile-Fehler.</p>
<pre><code class="language-cpp">#include &lt;stdafx.h&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
#include &lt;regex&gt;
#include &lt;iterator&gt;

using namespace std;

istream&amp; operator&gt;&gt;(istream&amp; is, pair&lt;int, string&gt;&amp; obj)
{
	string line;
	getline(is, line);
	cmatch matches;
	regex rex(&quot;(\\d+)\\|(\\w+)&quot;);
	regex_search(line.c_str(), matches, rex);
	obj.first = strtol(matches[1].str().c_str(), 0, 0);
	obj.second = matches[2];
	return is;
}

int main()
{
	const char* filename = &quot;test.txt&quot;;
	ifstream file(filename);
	istream_iterator&lt; pair&lt;string, int&gt; &gt; str_iter(file);
	istream_iterator&lt; pair&lt;string, int&gt; &gt; end_iter;
	vector&lt; pair&lt;int, string&gt; &gt; vec(str_iter, end_iter);
	file.close();

	for (vector&lt; pair&lt;int, string&gt; &gt;::iterator iter = vec.begin(); iter != vec.end(); ++iter)
	{
		cout &lt;&lt; iter-&gt;first &lt;&lt; ' ' &lt;&lt; iter-&gt;second &lt;&lt; '\n';
	}
	return 0;
}
</code></pre>
<blockquote>
<p>error C2678: Binärer Operator '&gt;&gt;': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'std::basic_istream&lt;_Elem,_Traits&gt;' akzeptiert (oder keine geeignete Konvertierung möglich)</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2196425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196425</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Wed, 28 Mar 2012 22:24:39 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen mit Inserter on Thu, 29 Mar 2012 08:43:45 GMT]]></title><description><![CDATA[<p>Das hängt mit dem Lookup zusammen. Der Compiler sucht nur im Namensraum <code>std</code> nach dem Operator, dort wird er ihn nicht finden.</p>
<p>Zwei Möglichkeiten:</p>
<ul>
<li>Du fügst deinen Operator zu <code>std</code> hinzu (nicht schön!)</li>
<li>Du wrappst einfach dein <code>std::pair&lt;int, string&gt;</code> in eine eigene <code>struct MyPair</code></li>
</ul>
<p>Hier sollte dann ADL auch funktionieren.</p>
<p>BTW:</p>
<p>Wurstinator schrieb:</p>
<blockquote>
<pre><code class="language-cpp">istream_iterator&lt; pair&lt;string, int&gt; &gt; str_iter(file);
istream_iterator&lt; pair&lt;string, int&gt; &gt; end_iter;
vector&lt; pair&lt;int, string&gt; &gt; vec(str_iter, end_iter);
</code></pre>
</blockquote>
<p>Typen vertauscht <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/2196508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196508</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Thu, 29 Mar 2012 08:43:45 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen mit Inserter on Thu, 29 Mar 2012 16:51:37 GMT]]></title><description><![CDATA[<p>Den operator zu std hinzuzufügen klappt leider auch nicht:</p>
<pre><code class="language-cpp">#include &lt;stdafx.h&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
#include &lt;regex&gt;
#include &lt;iterator&gt;

using namespace std;

namespace std
{
istream&amp; operator&gt;&gt;(istream&amp; is, pair&lt;int, string&gt;&amp; obj)
{
	string line;
	getline(is, line);
	cmatch matches;
	regex rex(&quot;(\\d+)\\|(\\w+)&quot;);
	regex_search(line.c_str(), matches, rex);
	obj.first = strtol(matches[1].str().c_str(), 0, 0);
	obj.second = matches[2];
	return is;
}
}

int main()
{
	const char* filename = &quot;test.txt&quot;;
	ifstream file(filename);
	istream_iterator&lt; pair&lt;string, int&gt; &gt; str_iter(file);
	istream_iterator&lt; pair&lt;string, int&gt; &gt; end_iter();
	vector&lt; pair&lt;string, int&gt; &gt; vec;//(str_iter, end_iter);
	file.close();

	for (vector&lt; pair&lt;string, int&gt; &gt;::iterator iter = vec.begin(); iter != vec.end(); ++iter)
	{
		cout &lt;&lt; iter-&gt;first &lt;&lt; ' ' &lt;&lt; iter-&gt;second &lt;&lt; '\n';
	}
	return 0;
}
</code></pre>
<p>Oder habe ich dich da falsch verstanden?</p>
<blockquote>
<p>Typen vertauscht <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>
</blockquote>
<p>Ups <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196710</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Thu, 29 Mar 2012 16:51:37 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen mit Inserter on Thu, 29 Mar 2012 16:53:30 GMT]]></title><description><![CDATA[<p>Aquae schrieb:</p>
<blockquote>
<p>Du fügst deinen Operator zu <code>std</code> hinzu (<s>nicht schön!</s>)</p>
</blockquote>
<p>nicht erlaubt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196712</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 29 Mar 2012 16:53:30 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen mit Inserter on Thu, 29 Mar 2012 17:27:26 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/26445">@Wurstinator</a>: Schau dir mal Signatur deines <code>operator&gt;&gt;</code> an, insbesondere die Typen-Reihenfolge von <code>pair</code> <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/2196729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196729</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Thu, 29 Mar 2012 17:27:26 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen mit Inserter on Thu, 29 Mar 2012 17:54:35 GMT]]></title><description><![CDATA[<p>Aquae schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/26445">@Wurstinator</a>: Schau dir mal Signatur deines <code>operator&gt;&gt;</code> an, insbesondere die Typen-Reihenfolge von <code>pair</code> <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>
</blockquote>
<p>Ich vermisse einen Head-Desk-Smiley <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 />
Danke. Bei der Fehlersuche habe ich die beiden Typen getauscht, aber wohl nicht überall daran gedacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196744</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Thu, 29 Mar 2012 17:54:35 GMT</pubDate></item><item><title><![CDATA[Reply to Datei auslesen mit Inserter on Thu, 29 Mar 2012 18:08:54 GMT]]></title><description><![CDATA[<p>Wurstinator schrieb:</p>
<blockquote>
<p>Ich vermisse einen Head-Desk-Smiley <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 />
Danke. Bei der Fehlersuche habe ich die beiden Typen getauscht, aber wohl nicht überall daran gedacht.</p>
</blockquote>
<p><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="😕"
    /> Ich dachte, das hättest du mit</p>
<p>Wurstinator schrieb:</p>
<blockquote>
<blockquote>
<p>Typen vertauscht <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>
</blockquote>
<p>Ups <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>schon gemeint. Sonst hatte ich dir das nämlich auch schon vor einer Stunde sagen können. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196748</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 29 Mar 2012 18:08:54 GMT</pubDate></item></channel></rss>