<?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[chount letters and words in a string]]></title><description><![CDATA[<p>hallo</p>
<p>bin c++ neuling und habe hier einige schulübungen zu lösen.<br />
schlage mich grad mit den begriffen:<br />
string, stream, stringstream, ostream rum.<br />
bissher kanne ich nur den string. ich hab gelesen das streams sogenannte container sind.<br />
was bringt mir das? kann ich ein stream oder ein stringstream, sstream (unterschied?) also als zwischenspeicher für objekte anschauen?</p>
<p>dann zur eigentlichen aufgabe:<br />
ich suche nach einer einfachen möglichkeit, die anzahl wörter und die anzahl buchstaben (ohne leerzeichen und spezialzeichen) auszugeben. viele lösungen die ich online gefunden habe, benutzen irgend eine art stream, in welchen sie wort für word reinschieben.</p>
<p>kann mir jemand eine einfach lösung coden, die nicht auf expertenwissen aufbaut, dh sehr leicht verständlich ist?</p>
<p>hier mein code:</p>
<pre><code>#include &lt;string&gt;
#include &lt;sstream&gt;

using namespace std;

#ifndef CText_H_
#define CText_H_

class CText {
	string text; //member

public:
	// constructors
	CText(string text):text(&quot;&quot;){
	}
	CText():text(&quot;&quot;){
	}
	//methods
	unsigned getWordCount(){

		return 0;
	}
	unsigned getLetterCount(){

		return 0;
	}
	bool cointains(string word){

		return 0;
	}
	ostream&amp; toStream(ostream&amp; stream){

	}

};//endclass

#endif
</code></pre>
<pre><code>#include &lt;string&gt;
#include &lt;sstream&gt;
#include &lt;iostream&gt;
#include &quot;CVector.h&quot;
#include &quot;CText.h&quot;

using namespace std;

int main(){

	/******************
	AUFGABE 1 - vector
	*******************/
	// member anlegen
	CVector v1(1,2), v2(3,4);

	// SP vector 1 vektor 2 
	cout &lt;&lt; &quot;ScalarProduct:\n&quot; &lt;&lt; v1.scalarProduct(v2) &lt;&lt; endl &lt;&lt; endl;

	// addition v1 v2
	cout &lt;&lt; &quot;Addition:\n&quot;;
	v1.add(v2).toStream(cout);
	// da man einen vector nich cout &lt;&lt; vector schieben kann den umweg über die methode toStream

	/*****************
	AUFGABE 2 - text
	******************/

	CText text(&quot;Der Betrunkene sagt, was der Nüchterne denkt.&quot;);
	cout &lt;&lt; &quot;Anzahl Wörter:\n&quot; &lt;&lt; text.getWordCount() &lt;&lt;
		&quot;\n\nAnzahl Buchstaben:\n&quot; &lt;&lt; text.getLetterCount() 
		&lt;&lt; endl &lt;&lt; endl;

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/320189/chount-letters-and-words-in-a-string</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 12:07:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/320189.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 19 Sep 2013 17:44:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to chount letters and words in a string on Thu, 19 Sep 2013 17:44:18 GMT]]></title><description><![CDATA[<p>hallo</p>
<p>bin c++ neuling und habe hier einige schulübungen zu lösen.<br />
schlage mich grad mit den begriffen:<br />
string, stream, stringstream, ostream rum.<br />
bissher kanne ich nur den string. ich hab gelesen das streams sogenannte container sind.<br />
was bringt mir das? kann ich ein stream oder ein stringstream, sstream (unterschied?) also als zwischenspeicher für objekte anschauen?</p>
<p>dann zur eigentlichen aufgabe:<br />
ich suche nach einer einfachen möglichkeit, die anzahl wörter und die anzahl buchstaben (ohne leerzeichen und spezialzeichen) auszugeben. viele lösungen die ich online gefunden habe, benutzen irgend eine art stream, in welchen sie wort für word reinschieben.</p>
<p>kann mir jemand eine einfach lösung coden, die nicht auf expertenwissen aufbaut, dh sehr leicht verständlich ist?</p>
<p>hier mein code:</p>
<pre><code>#include &lt;string&gt;
#include &lt;sstream&gt;

using namespace std;

#ifndef CText_H_
#define CText_H_

class CText {
	string text; //member

public:
	// constructors
	CText(string text):text(&quot;&quot;){
	}
	CText():text(&quot;&quot;){
	}
	//methods
	unsigned getWordCount(){

		return 0;
	}
	unsigned getLetterCount(){

		return 0;
	}
	bool cointains(string word){

		return 0;
	}
	ostream&amp; toStream(ostream&amp; stream){

	}

};//endclass

#endif
</code></pre>
<pre><code>#include &lt;string&gt;
#include &lt;sstream&gt;
#include &lt;iostream&gt;
#include &quot;CVector.h&quot;
#include &quot;CText.h&quot;

using namespace std;

int main(){

	/******************
	AUFGABE 1 - vector
	*******************/
	// member anlegen
	CVector v1(1,2), v2(3,4);

	// SP vector 1 vektor 2 
	cout &lt;&lt; &quot;ScalarProduct:\n&quot; &lt;&lt; v1.scalarProduct(v2) &lt;&lt; endl &lt;&lt; endl;

	// addition v1 v2
	cout &lt;&lt; &quot;Addition:\n&quot;;
	v1.add(v2).toStream(cout);
	// da man einen vector nich cout &lt;&lt; vector schieben kann den umweg über die methode toStream

	/*****************
	AUFGABE 2 - text
	******************/

	CText text(&quot;Der Betrunkene sagt, was der Nüchterne denkt.&quot;);
	cout &lt;&lt; &quot;Anzahl Wörter:\n&quot; &lt;&lt; text.getWordCount() &lt;&lt;
		&quot;\n\nAnzahl Buchstaben:\n&quot; &lt;&lt; text.getLetterCount() 
		&lt;&lt; endl &lt;&lt; endl;

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2353853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353853</guid><dc:creator><![CDATA[luk1990]]></dc:creator><pubDate>Thu, 19 Sep 2013 17:44:18 GMT</pubDate></item><item><title><![CDATA[Reply to chount letters and words in a string on Thu, 19 Sep 2013 17:57:05 GMT]]></title><description><![CDATA[<pre><code>#include &lt;string&gt;
#include &lt;iostream&gt;
#include &lt;sstream&gt;
#include &lt;cctype&gt;

int main()
{
	// Umlaute sind in ASCII so nicht darstellbar!

	std::string str = &quot;Der Betrunkene sagt, was der Nuechterne denkt.&quot;;

	std::stringstream strm(str);

	std::string word;
	int wordCount = 0;
	int letterCount = 0;

	while (strm &gt;&gt; word)
	{
		for (int i = 0; i &lt; word.length(); ++i)
			if (std::isalpha(word[i]))
				++letterCount;

		++wordCount;
	}

	std::cout &lt;&lt; &quot;Anzahl Wörter:\n&quot; &lt;&lt; wordCount &lt;&lt; &quot;\n\nAnzahl Buchstaben:\n&quot; &lt;&lt; letterCount &lt;&lt; &quot;\n&quot; &lt;&lt; std::endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2353856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353856</guid><dc:creator><![CDATA[klöklöklö]]></dc:creator><pubDate>Thu, 19 Sep 2013 17:57:05 GMT</pubDate></item><item><title><![CDATA[Reply to chount letters and words in a string on Thu, 19 Sep 2013 18:08:06 GMT]]></title><description><![CDATA[<p>Hmm, wo anfangen...<br />
Schreibe kein C vor jede Klasse. Das ist nur schlecht lesbar und nicht nützlich.<br />
Header sollten keine namespaces einbringen, sonst zerstört man den Sinn von namespaces.<br />
Habt ihr zur Übung Strings und Vektoren gebaut? Es gibt da std::string, std::vector und so.<br />
Man kann sehr wohl nutzerdefinierte Typen in cout schieben:</p>
<pre><code>ostream&amp; operator&lt;&lt;(ostream&amp; os, const CVector &amp;v){
    v.toStream(os); //hier könnte man auch os &lt;&lt; v.daten oder so schreiben
    return os;
}
</code></pre>
<p>Hast du eine Definition was ein Wort ist? Wie viele Wörter hat &quot;Hallo(-+# jij|oo&quot;? Normalerweise legt man Trennzeichen fest, &quot;, .?!&quot; zum Beispiel. Man könnte dafür <a href="http://www.cplusplus.com/reference/algorithm/find_first_of/" rel="nofollow">find_first_of</a> benutzen, ungefähr so:</p>
<pre><code>auto s = &quot;Der Betrunkene sagt, was der Nüchterne denkt.&quot;;
auto trenner = &quot;, .?!&quot;;
auto pos = find_first_of(begin(s), end(s), begin(trenner), end(trenner));
if (pos != end(s)) //wir haben was gefunden
    //mit pos als start nochmal suchen und treffer mitzählen
</code></pre>
<p>...Oder man nimmt die fertige Lösung von klö.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2353859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353859</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Thu, 19 Sep 2013 18:08:06 GMT</pubDate></item><item><title><![CDATA[Reply to chount letters and words in a string on Thu, 19 Sep 2013 18:16:18 GMT]]></title><description><![CDATA[<p>Ueber die while-Schleife kann man gern straiten, aber immer wenn ich sowas sehe, dann werde ich traurig:</p>
<pre><code class="language-cpp">for (int i = 0; i &lt; word.length(); ++i) 
    if (std::isalpha(word[i])) 
        ++letterCount;
</code></pre>
<p>Da koennte man:</p>
<pre><code class="language-cpp">letterCount += std::isalpha(word[i]);
</code></pre>
<pre><code class="language-cpp">(for auto const&amp; c: word) ...
</code></pre>
<pre><code class="language-cpp">std::count_if
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2353862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2353862</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Thu, 19 Sep 2013 18:16:18 GMT</pubDate></item></channel></rss>