<?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[Stringverarbeitung&#x2F;Textverarbeitung]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Aufgabe von einen Kollgen erklärt bekommen, die in einer Informatik klausur gefragt war.</p>
<p>Aufgabe:<br />
Es soll in einer textdatei das Wort &quot;zahn&quot; herrausgesucht werden und auf dem Bildschirm darstellen. Des weiteren soll die Anzahl der gefundenen Wörter gezählt werden.<br />
Es ist ausserdem egal(!!!) ob das Wort klein oder groß sowie mit einen anderem Wort zusammensteht.<br />
Bsp. zahn, ZAHN, Zahn, zahnbürste, Zahncreme etc.</p>
<p>Also das Program habe ich schon mal angefangen.</p>
<p>[cpp]<br />
#inlcude&lt;iostream&gt;<br />
#include&lt;fstream&gt;<br />
#include &lt;string&gt;</p>
<p>using namespace std;</p>
<p>int main()<br />
{<br />
ifstream quelle;<br />
string wort;<br />
string dateiname;<br />
string str1=('z','a','h','n');</p>
<p>string::size_type pos=0;</p>
<p>cout&lt;&lt;&quot;Bitte Dateiname eingegeben&quot;&lt;&lt;endl;<br />
cin&gt;&gt;dateiname;</p>
<p>quelle.open(dateiname.c_str());</p>
<p>if(!quelle)<br />
{<br />
cerr&lt;&lt;&quot;Kann nicht geöffnet werden&quot;&lt;&lt;endl;<br />
exit(-1);<br />
}</p>
<p>Ich würde jetzt mit find die pos suchen und dann zählen. Aber wie mach ich es das es egal ist, ob das wort groß, klein oder zusammen geschrieben ist?</p>
<p>Vielen Dank.</p>
<p>Gruß</p>
<p>pos=quelle.find(str1,pos)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/307973/stringverarbeitung-textverarbeitung</link><generator>RSS for Node</generator><lastBuildDate>Thu, 06 Aug 2026 05:20:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307973.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 11 Sep 2012 07:48:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Stringverarbeitung&#x2F;Textverarbeitung on Tue, 11 Sep 2012 07:48:12 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Aufgabe von einen Kollgen erklärt bekommen, die in einer Informatik klausur gefragt war.</p>
<p>Aufgabe:<br />
Es soll in einer textdatei das Wort &quot;zahn&quot; herrausgesucht werden und auf dem Bildschirm darstellen. Des weiteren soll die Anzahl der gefundenen Wörter gezählt werden.<br />
Es ist ausserdem egal(!!!) ob das Wort klein oder groß sowie mit einen anderem Wort zusammensteht.<br />
Bsp. zahn, ZAHN, Zahn, zahnbürste, Zahncreme etc.</p>
<p>Also das Program habe ich schon mal angefangen.</p>
<p>[cpp]<br />
#inlcude&lt;iostream&gt;<br />
#include&lt;fstream&gt;<br />
#include &lt;string&gt;</p>
<p>using namespace std;</p>
<p>int main()<br />
{<br />
ifstream quelle;<br />
string wort;<br />
string dateiname;<br />
string str1=('z','a','h','n');</p>
<p>string::size_type pos=0;</p>
<p>cout&lt;&lt;&quot;Bitte Dateiname eingegeben&quot;&lt;&lt;endl;<br />
cin&gt;&gt;dateiname;</p>
<p>quelle.open(dateiname.c_str());</p>
<p>if(!quelle)<br />
{<br />
cerr&lt;&lt;&quot;Kann nicht geöffnet werden&quot;&lt;&lt;endl;<br />
exit(-1);<br />
}</p>
<p>Ich würde jetzt mit find die pos suchen und dann zählen. Aber wie mach ich es das es egal ist, ob das wort groß, klein oder zusammen geschrieben ist?</p>
<p>Vielen Dank.</p>
<p>Gruß</p>
<p>pos=quelle.find(str1,pos)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250157</guid><dc:creator><![CDATA[Rob c++]]></dc:creator><pubDate>Tue, 11 Sep 2012 07:48:12 GMT</pubDate></item><item><title><![CDATA[Reply to Stringverarbeitung&#x2F;Textverarbeitung on Tue, 11 Sep 2012 08:50:50 GMT]]></title><description><![CDATA[<p>Hättest du gegoogelt, hättest du z.B. das hier gefunden: <a href="http://stackoverflow.com/questions/3152241/case-insensitive-stdstring-find" rel="nofollow">http://stackoverflow.com/questions/3152241/case-insensitive-stdstring-find</a></p>
<p>Sonst hast du die Möglichkeit beide Strings in Kleinbuchstaben umzuwandeln und dann zu vergleichen. Das könnte man z.B. mit Funktionstemplate tolower() (nur #include &lt;locale&gt; nicht vergessen). Hier müsstest du allerdings die Spezialfälle wie äöü beachten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250179</guid><dc:creator><![CDATA[*Rewind*]]></dc:creator><pubDate>Tue, 11 Sep 2012 08:50:50 GMT</pubDate></item><item><title><![CDATA[Reply to Stringverarbeitung&#x2F;Textverarbeitung on Tue, 11 Sep 2012 08:53:06 GMT]]></title><description><![CDATA[<p>[Rewind] schrieb:</p>
<blockquote>
<p>Hier müsstest du allerdings die Spezialfälle wie äöü beachten.</p>
</blockquote>
<p>Die kommen in dem zu suchenden Wort nicht vor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250182</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 11 Sep 2012 08:53:06 GMT</pubDate></item><item><title><![CDATA[Reply to Stringverarbeitung&#x2F;Textverarbeitung on Tue, 11 Sep 2012 09:01:06 GMT]]></title><description><![CDATA[<p>Das ist mir schon klar - deswegen war's auch nur ein Hinweis (im Konjunktiv).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250187</guid><dc:creator><![CDATA[*Rewind*]]></dc:creator><pubDate>Tue, 11 Sep 2012 09:01:06 GMT</pubDate></item><item><title><![CDATA[Reply to Stringverarbeitung&#x2F;Textverarbeitung on Tue, 11 Sep 2012 11:03:12 GMT]]></title><description><![CDATA[<p>Also ich kann iwie nix mit der seite anfangen. ich bin anfänger in info und finde die seite hat schon ein paar sehr komplexe sachen enthalten.</p>
<p>geht das nicht auch einfacher?</p>
<p>also das die großen buchstaben kleingeschrieben werden? oder gibt es eine andere methode das zu machen?</p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250235</guid><dc:creator><![CDATA[rob c++]]></dc:creator><pubDate>Tue, 11 Sep 2012 11:03:12 GMT</pubDate></item><item><title><![CDATA[Reply to Stringverarbeitung&#x2F;Textverarbeitung on Tue, 11 Sep 2012 12:48:36 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;algorithm&gt;
#include &lt;cctype&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
using namespace std;

int main()
{
	cout &lt;&lt; &quot;please enter filename: &quot; &lt;&lt; endl;
	string filename;
	getline(cin, filename); // Dateiname eingeben. getline, dass auch Whitespaces eingegeben werden können.

	ifstream file( filename.c_str() );
	if( !file.is_open() ) // Programm beenden, falls Textdatei nicht geöffnet werden konnte.
	{
		cerr &lt;&lt; &quot;could not open file&quot;;
		return -1;
	}

	file.seekg (0, ios::end); // Zeiger auf das Ende der Textdatei setzen, um die Größe ermitteln zu können.
    const unsigned size = file.tellg(); // Größe der Textdatei ermitteln.
    file.seekg (0, ios::beg); // Größe wurde ermittelt, nun den Zeiger wieder auf den Anfang der Textdatei setzen.

    string str;
    str.resize(size); // Speicher für insg. 'size' Zeichen reservieren.
    file.read(&amp;str[0], size); // Inhalt der Textdatei im String abspeichern.

	transform(str.begin(), str.end(), str.begin(), tolower); // Der String soll nur noch Kleinbuchstaben enthalten.

	const string search = &quot;zahn&quot;; // Suchwort = zahn
	unsigned occurrence = 0; // Zählt, wie oft das Suchwort im String vorkommt.

	for(unsigned i=0; i&lt;str.size(); i+=search.size())
	{
		i = str.find(search, i); // String nach dem Suchwort durchsuchen.
		if( i==string::npos) // Abbruch, falls das Suchwort im String gar nicht vorkommt.
			break;
		++occurrence; // Suchwort wurde gefunden. Counter um 1 erhöhen.
	}

	cout &lt;&lt; search &lt;&lt; &quot; was found: &quot; &lt;&lt; occurrence &lt;&lt; 'x'; // Ergebnis aussgeben.
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2250267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250267</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Tue, 11 Sep 2012 12:48:36 GMT</pubDate></item><item><title><![CDATA[Reply to Stringverarbeitung&#x2F;Textverarbeitung on Tue, 11 Sep 2012 13:18:01 GMT]]></title><description><![CDATA[<p>Also den Anfang des Quellcodes versteh ich ja, aber wofür brauche ich den Zeiger auf das Ende und wofür die Größe?</p>
<p>file.seekg (0, ios::end); // Zeiger auf das Ende der Textdatei setzen, um die Größe ermitteln zu können.<br />
const unsigned size = file.tellg(); // Größe der Textdatei ermitteln.<br />
file.seekg (0, ios::beg); // Größe wurde ermittelt, nun den Zeiger wieder auf den Anfang der Textdatei setzen.</p>
<p>Versteh ich das richtig, das ich dann die komplette text-datei in einen string setzte?</p>
<p>string str;<br />
str.resize(size); // Speicher für insg. 'size' Zeichen reservieren.<br />
file.read(&amp;str[0], size); // Inhalt der Textdatei im String abspeichern.</p>
<p>Wofür ist dann das :</p>
<p>transform(str.begin(), str.end(), str.begin(), tolower); // Der String soll nur noch Kleinbuchstaben enthalten.</p>
<p>Vielen Dank.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250274</guid><dc:creator><![CDATA[rob c++]]></dc:creator><pubDate>Tue, 11 Sep 2012 13:18:01 GMT</pubDate></item><item><title><![CDATA[Reply to Stringverarbeitung&#x2F;Textverarbeitung on Tue, 11 Sep 2012 13:37:33 GMT]]></title><description><![CDATA[<p>rob c++ schrieb:</p>
<blockquote>
<p>Also den Anfang des Quellcodes versteh ich ja, aber wofür brauche ich den Zeiger auf das Ende und wofür die Größe?</p>
<p>file.seekg (0, ios::end); // Zeiger auf das Ende der Textdatei setzen, um die Größe ermitteln zu können.<br />
const unsigned size = file.tellg(); // Größe der Textdatei ermitteln.<br />
file.seekg (0, ios::beg); // Größe wurde ermittelt, nun den Zeiger wieder auf den Anfang der Textdatei setzen.</p>
<p>Versteh ich das richtig, das ich dann die komplette text-datei in einen string setzte?</p>
</blockquote>
<p>Wenn du eine Datei öffnest, gibt es einen Zeiger. Dieser zeig auf das erste Zeichen der Datei (Position=0). Mit <code>ios::end</code> setzt du den Zeiger auf das letzte Zeichen der Datei (Position=Dateigröße). <code>tellg()</code> gibt die Position des Zeigers zurück. Da er auf dem Ende steht ist das dann die Dateigröße. Genau, die komplette Textdatei befindet sich dann in dem String.</p>
<p>rob c++ schrieb:</p>
<blockquote>
<p>Wofür ist dann das :</p>
<p>transform(str.begin(), str.end(), str.begin(), tolower); // Der String soll nur noch Kleinbuchstaben enthalten.</p>
</blockquote>
<p>Wie es der Name schon sagt, wird etwas transformiert. Die ersten beiden Paramter bezeichnen den Bereich, der transformiert werden soll (der gesamte String). Der dritte Parameter sagt, wo das transformierte Etwas abgespeichert werden soll (fortlaufend gebinnend beim Stringanfang). Ja und der vierte Parameter sagt einfach, wie transformiert werden soll (tolower=kleinbuchstaben).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250279</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Tue, 11 Sep 2012 13:37:33 GMT</pubDate></item><item><title><![CDATA[Reply to Stringverarbeitung&#x2F;Textverarbeitung on Tue, 11 Sep 2012 14:24:35 GMT]]></title><description><![CDATA[<p>Aber speicher ich die größe erst in eine Variable:<br />
const unsigned size = file.tellg();</p>
<p>Dann deklarier ich die String variable str (wo der text nachher reinkopiert wird? wanngeschieht das? Bedeutet resize = reservieren?<br />
Also ich übergebe den file (die textdatei) an den str mit &amp;str[0] sowie die anzahl size.</p>
<p>string str;<br />
str.resize(size); // Speicher für insg. 'size' Zeichen reservieren.<br />
file.read(&amp;str[0], size);</p>
<p>Danach transformier ich den str von anfang bis ende in kleinbuchstaben.</p>
<p>Zudem deklarier ich das Suchwort und den Zähler.</p>
<p>Jedoch hab ich noch ein Problem mit der Schleife. im Schleifenkopf steht ja<br />
anweisung ab i=0 durch den string bis das ende gefunden wird.<br />
Jedoch was genau soll i+=search.size() bedeuten. Soll es heißen er geht alle Buchstaben durch? also so wie i++?</p>
<p>for(unsigned i=0; i&lt;str.size(); i+=search.size())<br />
{<br />
i = str.find(search, i); // String nach dem Suchwort durchsuchen.<br />
if( i==string::npos) // Abbruch, falls das Suchwort im String gar nicht vorkommt.<br />
break;<br />
++occurrence; // Suchwort wurde gefunden. Counter um 1 erhöhen.<br />
}</p>
<p>Du kannst ja richtig gut info, da bin ich ja ein anfänger dagegen.</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250317</guid><dc:creator><![CDATA[rob c++]]></dc:creator><pubDate>Tue, 11 Sep 2012 14:24:35 GMT</pubDate></item><item><title><![CDATA[Reply to Stringverarbeitung&#x2F;Textverarbeitung on Tue, 11 Sep 2012 14:28:58 GMT]]></title><description><![CDATA[<p>Vllcht darf ich den Tipp geben deinen code mit [/cpp][cpp] einzubinden. Einfach unten einmal klicken auf die passende Sprache Code rein und wieder drauf klicken. <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="🙂"
    /><br />
Dann kann man deine posts einfacher lesen. <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="🙂"
    /><br />
LG Enno</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250320</guid><dc:creator><![CDATA[Enno]]></dc:creator><pubDate>Tue, 11 Sep 2012 14:28:58 GMT</pubDate></item><item><title><![CDATA[Reply to Stringverarbeitung&#x2F;Textverarbeitung on Tue, 11 Sep 2012 14:36:41 GMT]]></title><description><![CDATA[<p>Danke für den Tipp!</p>
<p>Aber speicher ich die größe erst in eine Variable:</p>
<pre><code class="language-cpp">const unsigned size = file.tellg();
</code></pre>
<p>Dann deklarier ich die String variable str (wo der text nachher reinkopiert wird? wanngeschieht das? Bedeutet resize = reservieren?<br />
Also ich übergebe den file (die textdatei) an den str mit &amp;str[0] sowie die anzahl size.</p>
<pre><code class="language-cpp">string str; 
str.resize(size); // Speicher für insg. 'size' Zeichen reservieren. 
file.read(&amp;str[0], size);
</code></pre>
<p>Danach transformier ich den str von anfang bis ende in kleinbuchstaben.</p>
<p>Zudem deklarier ich das Suchwort und den Zähler.</p>
<p>Jedoch hab ich noch ein Problem mit der Schleife. im Schleifenkopf steht ja<br />
anweisung ab i=0 durch den string bis das ende gefunden wird.<br />
Jedoch was genau soll i+=search.size() bedeuten. Soll es heißen er geht alle Buchstaben durch? also so wie i++?</p>
<pre><code class="language-cpp">for(unsigned i=0; i&lt;str.size(); i+=search.size()) 
{ 
i = str.find(search, i); // String nach dem Suchwort durchsuchen. 
if( i==string::npos) // Abbruch, falls das Suchwort im String gar nicht vorkommt. 
break; 
++occurrence; // Suchwort wurde gefunden. Counter um 1 erhöhen. 
}
</code></pre>
<p>Du kannst ja richtig gut info, da bin ich ja ein anfänger dagegen.</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250324</guid><dc:creator><![CDATA[robc++]]></dc:creator><pubDate>Tue, 11 Sep 2012 14:36:41 GMT</pubDate></item><item><title><![CDATA[Reply to Stringverarbeitung&#x2F;Textverarbeitung on Wed, 12 Sep 2012 09:37:38 GMT]]></title><description><![CDATA[<p>Zunächst wird der gesamte Inhalt in einen std::string gelesen. Damit das so einfach geht, wird erst die Dateigröße ermittelt. Anschließend werden so viele Bytes gelesen wie die Datei groß ist. Damit ist der gesamte Dateiinhalt im std::string.</p>
<p>Die Schleife beginnt bei 0 (also dem ersten Zeichen) und endet bei str.size(), also beim Ende des std::string. Dieser std::string stellt einige Funktionen bereit, die einem das Leben etwas einfacher machen.</p>
<p>Unter anderem bietet es auch find an, was nach dem Vorkommen einer Zeichenkette sucht. Der zweitere Parameter gibt an, wo begonnen werden soll zu suchen. Es wäre hier dumm jedes Mal am Anfang anzufangen. Wurde die Zeichenkette gefunden gibt find die Position zurück, wo die Zeichenkette gefunden wurde. Wurde die Zeichenkette nicht gefunden wird std::string::npos zurückgegeben. Sollte die Zeichenkette also nicht gefunden worden sein, wird die Schleife mit break verlassen. Die Suche ist beendet.</p>
<p>Wurde hingegen etwas gefunden, wird die Anzahl erhöht und die Variable i wird um die Länge der zu suchenden Zeichenkette erhöht. Bei Zahn wäre das 4.</p>
<p>Du kannst dir auch Debugausgaben hinzufügen, wo du z.B. mal die Positionen ausgeben lässt, etc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2250558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2250558</guid><dc:creator><![CDATA[gfhfgh]]></dc:creator><pubDate>Wed, 12 Sep 2012 09:37:38 GMT</pubDate></item></channel></rss>