<?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[Text einlesen und aufsplitten (C&#x2F;C++)]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe folgendes Problem: Ich möchte einen Text aus einer Textdatei in einen Vektor einlesen. Zeilenweise ist das soweit kein Problem, nun möchte ich diese aber in Wörter aufteilen (Trennzeichen quasi &quot; &quot;, ?, !, .). Die Funkton strtok funktioniert allerdings nur für Char-arrays. Hat jemand eine Idee, wie ich das am geschicktesten mit Vektoren mache?! Oder gibt es noch eine Alternative?</p>
<p>Vielen Dank und Grüße<br />
brasco2k</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/304268/text-einlesen-und-aufsplitten-c-c</link><generator>RSS for Node</generator><lastBuildDate>Sun, 09 Aug 2026 21:02:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/304268.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 02 Jun 2012 10:08:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Text einlesen und aufsplitten (C&#x2F;C++) on Sat, 02 Jun 2012 10:08:13 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe folgendes Problem: Ich möchte einen Text aus einer Textdatei in einen Vektor einlesen. Zeilenweise ist das soweit kein Problem, nun möchte ich diese aber in Wörter aufteilen (Trennzeichen quasi &quot; &quot;, ?, !, .). Die Funkton strtok funktioniert allerdings nur für Char-arrays. Hat jemand eine Idee, wie ich das am geschicktesten mit Vektoren mache?! Oder gibt es noch eine Alternative?</p>
<p>Vielen Dank und Grüße<br />
brasco2k</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2218408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218408</guid><dc:creator><![CDATA[brasco2k]]></dc:creator><pubDate>Sat, 02 Jun 2012 10:08:13 GMT</pubDate></item><item><title><![CDATA[Reply to Text einlesen und aufsplitten (C&#x2F;C++) on Sat, 02 Jun 2012 10:51:49 GMT]]></title><description><![CDATA[<p>Du könntest es elegant mit einem Whitespace-Facet machen:</p>
<p>Inhalt der Datei:</p>
<pre><code>hallo?welt!
schoenes wetter. oder?
</code></pre>
<p>Quellcode:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;algorithm&gt;
#include &lt;fstream&gt;
#include &lt;iterator&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
using namespace std;

class whitespace_facet : public ctype&lt;char&gt;
{
	private:
		mask table[table_size];
	public:
		whitespace_facet(const char* separator) : ctype&lt;char&gt;(table)
		{
			copy(classic_table(),classic_table()+table_size,table);
			for(; *separator; ++separator)
				table[*separator] |= space;
		}
};

int main()
{
	ifstream file(&quot;test.txt&quot;);
	vector&lt;string&gt; text;

	file.imbue( locale(locale(),new whitespace_facet(&quot;?!.&quot;)) );
	copy(istream_iterator&lt;string&gt;(file),istream_iterator&lt;string&gt;(),back_inserter(text)); // Und schon befindet sich jedes einzelne Wort separat im vector.

	copy(begin(text),end(text),ostream_iterator&lt;string&gt;(cout,&quot;\n&quot;)); // Testausgaben
}
</code></pre>
<p>Ausgabe:</p>
<pre><code>hallo
welt
schoenes
wetter
oder
</code></pre>
<p>Falls du kein C++11 benutzt, ersetzt du <code>begin(text)</code> und <code>end(text)</code> durch <code>text.begin()</code> und <code>text.end()</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2218424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218424</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 02 Jun 2012 10:51:49 GMT</pubDate></item><item><title><![CDATA[Reply to Text einlesen und aufsplitten (C&#x2F;C++) on Sat, 02 Jun 2012 11:13:04 GMT]]></title><description><![CDATA[<p>Gugelmoser schrieb:</p>
<blockquote>
<p>Du könntest es elegant mit einem Whitespace-Facet machen:</p>
<p>Inhalt der Datei:</p>
<pre><code>hallo?welt!
schoenes wetter. oder?
</code></pre>
<p>Quellcode:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;algorithm&gt;
#include &lt;fstream&gt;
#include &lt;iterator&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
using namespace std;

class whitespace_facet : public ctype&lt;char&gt;
{
	private:
		mask table[table_size];
	public:
		whitespace_facet(const char* separator) : ctype&lt;char&gt;(table)
		{
			copy(classic_table(),classic_table()+table_size,table);
			for(; *separator; ++separator)
				table[*separator] |= space;
		}
};

int main()
{
	ifstream file(&quot;C:\\Users\\Mando Diao\\Desktop\\ff\\test.txt&quot;);
	vector&lt;string&gt; text;

	file.imbue( locale(locale(),new whitespace_facet(&quot;?!.&quot;)) );
	copy(istream_iterator&lt;string&gt;(file),istream_iterator&lt;string&gt;(),back_inserter(text)); // Und schon befindet sich jedes einzelne Wort seperat im vector.

	copy(begin(text),end(text),ostream_iterator&lt;string&gt;(cout,&quot;\n&quot;)); // Testausgaben
}
</code></pre>
<p>Ausgabe:</p>
<pre><code>hallo
welt
schoenes
wetter
oder
</code></pre>
<p>Falls du kein C++11 benutzt, ersetzt du <code>begin(text)</code> und <code>end(text)</code> durch <code>text.begin()</code> und <code>text.end()</code></p>
</blockquote>
<p>Wieso benutzt du nicht gleich die Member-Methode?<br />
Und wieso so unnötig komplex? MAch doch einfach eine Schleife <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> :</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
#include &lt;iterator&gt;
#include &lt;algorithm&gt;

int main()
{
      using namespace std;
      ifstream stream(&quot;test.txt&quot;);
      vector&lt;string&gt; output(1);

      for(char c(stream.get());stream.good();stream.get(c))
      {
            if(string(&quot;?.! \n&quot;).find(c) != string::npos)
            {
                  if(!output.back().empty())
                        output.push_back(string());
                  continue;
            }

            output.back() += c;
      }

      copy(output.begin(), output.end(), ostream_iterator&lt;string&gt;(cout, &quot;\n&quot;)); // Same Story
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2218429</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218429</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 02 Jun 2012 11:13:04 GMT</pubDate></item><item><title><![CDATA[Reply to Text einlesen und aufsplitten (C&#x2F;C++) on Sat, 02 Jun 2012 11:20:11 GMT]]></title><description><![CDATA[<p>Hacker schrieb:</p>
<blockquote>
<p>Wieso benutzt du nicht gleich die Member-Methode?</p>
</blockquote>
<p>Was meinst du? Den Konstruktor von <code>std::vector</code> statt des copy-Befehls?</p>
<p>Hacker schrieb:</p>
<blockquote>
<p>Und wieso so unnötig komplex?]</p>
</blockquote>
<p>Du nennst es unnötig komplex, ich nenne es elegant. <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/2218434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218434</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 02 Jun 2012 11:20:11 GMT</pubDate></item><item><title><![CDATA[Reply to Text einlesen und aufsplitten (C&#x2F;C++) on Sat, 02 Jun 2012 11:37:45 GMT]]></title><description><![CDATA[<p>Gugelmoser schrieb:</p>
<blockquote>
<p>Hacker schrieb:</p>
<blockquote>
<p>Wieso benutzt du nicht gleich die Member-Methode?</p>
</blockquote>
<p>Was meinst du? Den Konstruktor von <code>std::vector</code> statt des copy-Befehls?</p>
</blockquote>
<p>Quatsch, bei <code>std::copy</code> einfach <code>text.begin()</code> anstatt <code>begin(text)</code> ...</p>
<p>Gugelmoser schrieb:</p>
<blockquote>
<p>Hacker schrieb:</p>
<blockquote>
<p>Und wieso so unnötig komplex?]</p>
</blockquote>
<p>Du nennst es unnötig komplex, ich nenne es elegant. <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>Da hast du Recht. Es war auch nur ein Spaß. Mir geht es halt darum, so wenig Text wie möglich zu haben - frag nicht warum... <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2218446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218446</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 02 Jun 2012 11:37:45 GMT</pubDate></item></channel></rss>