<?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[Problem mit der Stringfind funktion!]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin gerade mal wieder am Programmieren und hab jetzt ein ziemlich triviales Problem aber trotzdem komm ich grad von selbst nicht drauf.</p>
<p>Ich hab 4 Klassen. Polygonline, Point, Circle, Rectangle... Jede dieser Klassen hat einen Konstruktor welcher einen String mit Koordinaten nimmt und ihn auswertet. So bekommt zum Beispiel die Klasse Point einen solchen string: (x, y). Der Konstruktor wertet ihn aus und initialisert dann x und y. Funktioniert auch alles.</p>
<p>Nun hab ich aber eine Oberklasse namens Drawingobjekt von welcher die anderen abgeleitet sind. Diese Drawingobject hat auch eine virtuelle print funktion, naja tut eigentlich nix zur sache.</p>
<p>Also lange rede kurzer sinn, mein Problem ist folgendes.</p>
<p>Ich will nun anhand des String welchen der Benutzer eingibt erkennen für welche Klasse dieser vorgesehen ist.</p>
<p>Point bekommt: (x, y)<br />
Circle bekommt: &lt;(x, y), radius&gt;<br />
Polygonline: {(x, y) - (x, y) -...}</p>
<p>Also wollte ich per String Find funktion das ermitteln. Wenn &quot;&lt;&quot; gefunden wird dann für Circle, bei erfolgreichem finden von &quot;-&quot; bekommt es Polygonline.</p>
<p>Jedoch klappt das nicht wenn ich &quot;(&quot;, &quot;&lt;&quot; oder sowas suchen will. Entweder bekomm ich als wert 0 oder nen Debug fehler??</p>
<p>Wo könnte der Fehler liegen?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;
#include &quot;class_DrawingObject.hpp&quot;
#include &quot;class_OneDimObject.hpp&quot;
#include &quot;class_point.hpp&quot;
#include &quot;class_rectangle.hpp&quot;
#include &quot;class_circle.hpp&quot;
#include &quot;class_Polygonline.hpp&quot;
#include &quot;global_var.hpp&quot;

using namespace std;

int main()
{
DrawingObject * objects[20];
	int anzahl = 0;
	string str1;

	Point p1, p2;

	cout &lt;&lt; &quot;Wieviele Objekte wollen Sie einlesen?&quot; &lt;&lt; endl;
	cout &lt;&lt; &quot;Anzahl: &quot;;
	cin &gt;&gt; anzahl;
	fflush(stdin);

	/*cout &lt;&lt; &quot;Was fuer ein Objekt moechten Sie einlesen? 0 &gt; Point; 1 &gt; Circle; 2 &gt; Polygonline; 3 &gt; Rectangle: &quot;;

	cin &gt;&gt; objwahl;
	fflush(stdin);*/

	// Objekte einlesen

		for(int i=0; i&lt;anzahl; i++)
		{
			cout &lt;&lt; &quot;Bitte Objektkoordinaten eingeben: &quot;;
			getline(cin, str1);
			fflush(stdin);

			//cout &lt;&lt; endl &lt;&lt; endl &lt;&lt; str1 &lt;&lt; endl &lt;&lt; endl;
			//cout &lt;&lt; str1.find('&lt;');
			cout &lt;&lt; endl &lt;&lt; str1.find(&quot;(&quot;);

			if((str1.find(&quot;\(&quot;)!=string::npos)) //&amp;&amp; str1.find(&quot;&gt;&quot;))!=NULL)
				objects[i] = new Point(str1);
		}
return 0;
}
</code></pre>
<p>Viele Grüße mazeli</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/199659/problem-mit-der-stringfind-funktion</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 19:18:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199659.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 05 Dec 2007 19:05:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit der Stringfind funktion! on Wed, 05 Dec 2007 19:06:21 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin gerade mal wieder am Programmieren und hab jetzt ein ziemlich triviales Problem aber trotzdem komm ich grad von selbst nicht drauf.</p>
<p>Ich hab 4 Klassen. Polygonline, Point, Circle, Rectangle... Jede dieser Klassen hat einen Konstruktor welcher einen String mit Koordinaten nimmt und ihn auswertet. So bekommt zum Beispiel die Klasse Point einen solchen string: (x, y). Der Konstruktor wertet ihn aus und initialisert dann x und y. Funktioniert auch alles.</p>
<p>Nun hab ich aber eine Oberklasse namens Drawingobjekt von welcher die anderen abgeleitet sind. Diese Drawingobject hat auch eine virtuelle print funktion, naja tut eigentlich nix zur sache.</p>
<p>Also lange rede kurzer sinn, mein Problem ist folgendes.</p>
<p>Ich will nun anhand des String welchen der Benutzer eingibt erkennen für welche Klasse dieser vorgesehen ist.</p>
<p>Point bekommt: (x, y)<br />
Circle bekommt: &lt;(x, y), radius&gt;<br />
Polygonline: {(x, y) - (x, y) -...}</p>
<p>Also wollte ich per String Find funktion das ermitteln. Wenn &quot;&lt;&quot; gefunden wird dann für Circle, bei erfolgreichem finden von &quot;-&quot; bekommt es Polygonline.</p>
<p>Jedoch klappt das nicht wenn ich &quot;(&quot;, &quot;&lt;&quot; oder sowas suchen will. Entweder bekomm ich als wert 0 oder nen Debug fehler??</p>
<p>Wo könnte der Fehler liegen?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;
#include &quot;class_DrawingObject.hpp&quot;
#include &quot;class_OneDimObject.hpp&quot;
#include &quot;class_point.hpp&quot;
#include &quot;class_rectangle.hpp&quot;
#include &quot;class_circle.hpp&quot;
#include &quot;class_Polygonline.hpp&quot;
#include &quot;global_var.hpp&quot;

using namespace std;

int main()
{
DrawingObject * objects[20];
	int anzahl = 0;
	string str1;

	Point p1, p2;

	cout &lt;&lt; &quot;Wieviele Objekte wollen Sie einlesen?&quot; &lt;&lt; endl;
	cout &lt;&lt; &quot;Anzahl: &quot;;
	cin &gt;&gt; anzahl;
	fflush(stdin);

	/*cout &lt;&lt; &quot;Was fuer ein Objekt moechten Sie einlesen? 0 &gt; Point; 1 &gt; Circle; 2 &gt; Polygonline; 3 &gt; Rectangle: &quot;;

	cin &gt;&gt; objwahl;
	fflush(stdin);*/

	// Objekte einlesen

		for(int i=0; i&lt;anzahl; i++)
		{
			cout &lt;&lt; &quot;Bitte Objektkoordinaten eingeben: &quot;;
			getline(cin, str1);
			fflush(stdin);

			//cout &lt;&lt; endl &lt;&lt; endl &lt;&lt; str1 &lt;&lt; endl &lt;&lt; endl;
			//cout &lt;&lt; str1.find('&lt;');
			cout &lt;&lt; endl &lt;&lt; str1.find(&quot;(&quot;);

			if((str1.find(&quot;\(&quot;)!=string::npos)) //&amp;&amp; str1.find(&quot;&gt;&quot;))!=NULL)
				objects[i] = new Point(str1);
		}
return 0;
}
</code></pre>
<p>Viele Grüße mazeli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1415456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415456</guid><dc:creator><![CDATA[mazeli]]></dc:creator><pubDate>Wed, 05 Dec 2007 19:06:21 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit der Stringfind funktion! on Wed, 05 Dec 2007 19:51:31 GMT]]></title><description><![CDATA[<p>Also als erstes fällt mir auf, dass du in Zeile 18 einen Fehler hast: du hast ein Array mit Größe 20 auf DrawingObject <strong>Pointer</strong>.<br />
Deswegen wird dir die Zuweisung in Zeile 47 um die Ohren fliegen.</p>
<p>Desweiteren frage ich mich, warum du in Zeile 46 ein Backslash vor der Klammer hast?</p>
<p>Ach und in Zeile 39 kannst du statt getline() auch einfach &quot;cin &gt;&gt; str1;&quot; schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1415485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415485</guid><dc:creator><![CDATA[Tobias W]]></dc:creator><pubDate>Wed, 05 Dec 2007 19:51:31 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit der Stringfind funktion! on Wed, 05 Dec 2007 19:55:54 GMT]]></title><description><![CDATA[<p>hmm also der backslash soll da wirklich nicht sein <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>
<p>cin bricht aber beim auftreten von whitespaces ab, also beim ersten leerzeichen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1415488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415488</guid><dc:creator><![CDATA[mazeli]]></dc:creator><pubDate>Wed, 05 Dec 2007 19:55:54 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit der Stringfind funktion! on Wed, 05 Dec 2007 20:41:08 GMT]]></title><description><![CDATA[<p>Oh ja, stimmt. Sorry für diesen dummen Tip.<br />
Läuft es denn wenn du Zeile 18 und 46 verbesserst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1415506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415506</guid><dc:creator><![CDATA[Tobias W]]></dc:creator><pubDate>Wed, 05 Dec 2007 20:41:08 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit der Stringfind funktion! on Wed, 05 Dec 2007 21:15:10 GMT]]></title><description><![CDATA[<p>ich weiß allerdings nicht was falsch ist</p>
<p>wenn ich es so schreibe funktioniert es, also wenn ich die Koordinaten über ein menü eingebe ohne das dass programm automatisch erkennt was es ist.</p>
<pre><code class="language-cpp">cout &lt;&lt; &quot;Kreiskoordinaten eingeben, Format ist &lt;(x1, y1), radius&gt;: &quot;;
				getline(cin, str1);
				fflush(stdin);
				objects[i] = new Circle(str1);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1415518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415518</guid><dc:creator><![CDATA[mazeli]]></dc:creator><pubDate>Wed, 05 Dec 2007 21:15:10 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit der Stringfind funktion! on Wed, 05 Dec 2007 21:30:27 GMT]]></title><description><![CDATA[<p>Also ich weiß nicht was du hast, habe den Code so kompiliert und es geht einwandfrei:</p>
<pre><code class="language-cpp">int main()
{
    int anzahl = 0;
    string str1;

    cout &lt;&lt; &quot;Wieviele Objekte wollen Sie einlesen?&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;Anzahl: &quot;;
    cin &gt;&gt; anzahl;
    fflush(stdin);

    for(int i=0; i&lt;anzahl; i++)
    {
        cout &lt;&lt; &quot;Bitte Objektkoordinaten eingeben: &quot;;
        getline(cin, str1);
        fflush(stdin);

        if(str1.find('(') != string::npos)
            cout &lt;&lt; &quot;found (&quot; &lt;&lt; endl;
    }

    return 0;
}
</code></pre>
<p>Dieser Code macht genau das was du willst...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1415523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415523</guid><dc:creator><![CDATA[Tobias W]]></dc:creator><pubDate>Wed, 05 Dec 2007 21:30:27 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit der Stringfind funktion! on Wed, 05 Dec 2007 21:33:25 GMT]]></title><description><![CDATA[<p>Für solche &quot;String-Parser&quot;-Aufgaben eigenen sich doch Reguläre Ausdrücke. Oder stehe ich jetzt daneben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1415526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415526</guid><dc:creator><![CDATA[bwbg]]></dc:creator><pubDate>Wed, 05 Dec 2007 21:33:25 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit der Stringfind funktion! on Thu, 06 Dec 2007 17:51:20 GMT]]></title><description><![CDATA[<p>Tobias W schrieb:</p>
<blockquote>
<p>Also ich weiß nicht was du hast, habe den Code so kompiliert und es geht einwandfrei:</p>
<pre><code class="language-cpp">int main()
{
    int anzahl = 0;
    string str1;

    cout &lt;&lt; &quot;Wieviele Objekte wollen Sie einlesen?&quot; &lt;&lt; endl;
    cout &lt;&lt; &quot;Anzahl: &quot;;
    cin &gt;&gt; anzahl;
    fflush(stdin);

    for(int i=0; i&lt;anzahl; i++)
    {
        cout &lt;&lt; &quot;Bitte Objektkoordinaten eingeben: &quot;;
        getline(cin, str1);
        fflush(stdin);

        if(str1.find('(') != string::npos)
            cout &lt;&lt; &quot;found (&quot; &lt;&lt; endl;
    }

    return 0;
}
</code></pre>
<p>Dieser Code macht genau das was du willst...</p>
</blockquote>
<p>Danke! Ich hatte nen fatalen Denkfehler...naja war ja auch schon abends gestern <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>
<p>Danke nochmal <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/1416048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416048</guid><dc:creator><![CDATA[mazeli]]></dc:creator><pubDate>Thu, 06 Dec 2007 17:51:20 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit der Stringfind funktion! on Thu, 06 Dec 2007 18:36:37 GMT]]></title><description><![CDATA[<p>Man ist das nen Murks:</p>
<pre><code class="language-cpp">cin &gt;&gt; anzahl;
fflush(stdin);
</code></pre>
<p>undefiniertes Verhalten ...</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;limits&gt;

std::istream&amp; clear_stream(std::istream&amp; in)
{ in.clear(); in.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(), '\n'); return in; }

int main()
{
    std::size_t size(0);
    while (!(clear_stream(std::cin) &gt;&gt; size))
        std::cout &lt;&lt; &quot;Wie viele Objekte beabsichtigen Sie einzulesen? &quot;;

    std::vector&lt;DrawingObject*&gt; objects(size);

    for (std::size_t i(0); i &lt; size; ++i)
    {
        std::cout &lt;&lt; i &lt;&lt; &quot;. Objektk:\n\tKoordinaten: &quot;;
        std::string str_input;
        std::getline(std::cin, str_input);

        if (str_1ine.find(&quot;&lt;(&quot;) != std::string::npos &amp;&amp; str_line.find(&quot;&gt;&quot;) != std::string::npos)
            objects[i] = new circle(str_line);
        else if (/* ... Line ... */)
        else if (/* ... Point ... */)
    }
    for (std::size_t i(0); i &lt; size; ++i) delete objects[i];
}
</code></pre>
<p>... wobei du bei dem einlesen natürlich den Punkt als letztes einlesen solltest, da auch die anderen Objekte das Schema von diesem aufweisen.</p>
<p>Aja das Klassendesign ist miserabel <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /><br />
Dann könntest du evtl. mal einfach operator&gt;&gt; überladen usw. würde das ganze viel eleganter machen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416073</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 06 Dec 2007 18:36:37 GMT</pubDate></item></channel></rss>