<?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[Allgemeines Vorgehen bei der Interpretation von String-Inputs?]]></title><description><![CDATA[<p>Morgen,</p>
<p>ich arbeite gerade an einer Vektor-Klasse und möchte die in einer Art Konsolen-Eingabe verpacken.</p>
<p>Z.B. soll der User eintippen können</p>
<p>v1 add v1 v2</p>
<p>was soviel heißt wie, v1 = v1 + v2. Die Vektoren sollen dabei in einer kleinen Liste von vielleicht 8 Vektoren gespeichert sein und immer angezeigt werden.</p>
<p>Da es aber neben der Addition von Vektoren noch diverse andere Befehle geben soll (Subtraktion, Skalarprodukt, Kreuzprodukt, Einheitsvektor, Länge des Vektors,...) suche ich jetzt nach einer effizienten Method, den Input des Users zu durchsuchen und die richtige Funktion zu starten.<br />
Dabei muss beachtet werden, ob die Vektoren überhaupt schon erzeugt wurde, ob sie der selben Dimension angehören, ob das ergebnis in einem Vektor gespeichert werden soll (v1 add ...) oder direkt ausgegeben werden soll (print add ...)</p>
<p>Wie geht man hier am besten vor? Die genaue technische Umsetzung ist mir erstmal schnurz, wie man mit Strings umgeht, weiß ich im großen und ganzen. Es geht mir wirklich nur um das vorgehen.</p>
<p>Vielen Dank im Voraus,<br />
Grüße</p>
<p>PS: Wer die Frage nicht verstanden hat, was bei meinen Fragen irgendwie oft der Fall ist, einfach nochmal nachhaken. <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/topic/316340/allgemeines-vorgehen-bei-der-interpretation-von-string-inputs</link><generator>RSS for Node</generator><lastBuildDate>Thu, 30 Jul 2026 07:15:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/316340.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 30 Apr 2013 08:12:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Allgemeines Vorgehen bei der Interpretation von String-Inputs? on Tue, 30 Apr 2013 08:12:01 GMT]]></title><description><![CDATA[<p>Morgen,</p>
<p>ich arbeite gerade an einer Vektor-Klasse und möchte die in einer Art Konsolen-Eingabe verpacken.</p>
<p>Z.B. soll der User eintippen können</p>
<p>v1 add v1 v2</p>
<p>was soviel heißt wie, v1 = v1 + v2. Die Vektoren sollen dabei in einer kleinen Liste von vielleicht 8 Vektoren gespeichert sein und immer angezeigt werden.</p>
<p>Da es aber neben der Addition von Vektoren noch diverse andere Befehle geben soll (Subtraktion, Skalarprodukt, Kreuzprodukt, Einheitsvektor, Länge des Vektors,...) suche ich jetzt nach einer effizienten Method, den Input des Users zu durchsuchen und die richtige Funktion zu starten.<br />
Dabei muss beachtet werden, ob die Vektoren überhaupt schon erzeugt wurde, ob sie der selben Dimension angehören, ob das ergebnis in einem Vektor gespeichert werden soll (v1 add ...) oder direkt ausgegeben werden soll (print add ...)</p>
<p>Wie geht man hier am besten vor? Die genaue technische Umsetzung ist mir erstmal schnurz, wie man mit Strings umgeht, weiß ich im großen und ganzen. Es geht mir wirklich nur um das vorgehen.</p>
<p>Vielen Dank im Voraus,<br />
Grüße</p>
<p>PS: Wer die Frage nicht verstanden hat, was bei meinen Fragen irgendwie oft der Fall ist, einfach nochmal nachhaken. <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/2319809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2319809</guid><dc:creator><![CDATA[ruhig_brauner]]></dc:creator><pubDate>Tue, 30 Apr 2013 08:12:01 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeines Vorgehen bei der Interpretation von String-Inputs? on Tue, 30 Apr 2013 09:25:36 GMT]]></title><description><![CDATA[<p>Du hast dir da so eine Art umgekehrt polnische Notation (UPN) ausgedacht, bloß nicht &quot;umgekehrt&quot;. Das ist schon einmal gut, denn die ist relativ einfach zu parsen. Noch besser wäre es natürlich, wenn du dich auf richtige UPN festlegst, der Beispielausdruck würde dann &quot;v1 v2 add&quot; lauten (das Speichern würde ich erst einmal weglassen oder als eigenen Befehl implementieren).</p>
<p>Auf Wikipedia findest du auch erklärt wie man das parsen kann. Man geht den Ausdruck von links nach rechts durch. Bekommt man einen vector, so schiebt man ihn in ein freies Register. Kommt eine Operation, wird sie auf den Registern ausgeführt. Das Ergebnis ist der aktuelle Wert und landet im ersten Register. Auf Wikipedia ist das viel besser erklärt als ich das hier kann, daher fasse ich mich kurz.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2319836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2319836</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 30 Apr 2013 09:25:36 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeines Vorgehen bei der Interpretation von String-Inputs? on Tue, 30 Apr 2013 10:32:23 GMT]]></title><description><![CDATA[<p>UPN ist gar nicht nötig, nichtmal sachdienlich, fürchte ich.<br />
Alle Befehle haben das Format<br />
ergebnisvariable befehl [parameter1 [parameter2&rsqb;&rsqb;<br />
Das läßt sich doch prima parsen.<br />
Da es manche Befehle gibt, die keine sinnvolle Ergebnisvariable haben, würde ich den Befehl vorziehen.<br />
befehl [ergebnisvariable] [parameter1 [parameter2&rsqb;&rsqb;<br />
Und dann kannste immer das erste Wort lesen und zu der jeweiligen Parse-und Verarbeitungs-Funktion springen, die dem Wort entspricht. unordered_map&lt;string,funktionszeiger&gt; vielleicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2319853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2319853</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 30 Apr 2013 10:32:23 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeines Vorgehen bei der Interpretation von String-Inputs? on Tue, 30 Apr 2013 10:44:38 GMT]]></title><description><![CDATA[<p>ruhig_brauner schrieb:</p>
<blockquote>
<p>Wie geht man hier am besten vor? Die genaue technische Umsetzung ist mir erstmal schnurz, wie man mit Strings umgeht, weiß ich im großen und ganzen. Es geht mir wirklich nur um das vorgehen.</p>
</blockquote>
<p>Wo sind denn da Strings?</p>
<p>Du beschreibst uns, dass Du einen Input von der Konsole hast, und den möchtest Du parsen. Da tauchen erst mal keine Strings auf. Die Schnittstelle ist im Normalfall ein <a href="http://www.cplusplus.com/reference/istream/istream/" rel="nofollow">std::istream</a>. Und mit Hilfe des istream's und Kenntniss seiner Fähigkeiten(!) kann man den von Dir beschriebenen Ausdruck parsen.<br />
Ein Beispiel für eine ähnliche Anwendungen findest Du <a href="http://www.c-plusplus.net/forum/p1989618#1989618" rel="nofollow">hier</a> und hinter den Links auf die dort verwiesen wird.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2319855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2319855</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 30 Apr 2013 10:44:38 GMT</pubDate></item><item><title><![CDATA[Reply to Allgemeines Vorgehen bei der Interpretation von String-Inputs? on Tue, 30 Apr 2013 11:41:28 GMT]]></title><description><![CDATA[<p>Naja, ich lese die ganze Zeile ein und interpretiere den String dann. Aber mit ein wenig Suchen schaffe ich das bestimmt auch mit istream <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>
<p>Also alle Befehle sollen eine bestimmte Struktur haben. sinnvoll wäre z.B.</p>
<p>print = add v1 v2<br />
v1 = cp v1 v2</p>
<p>und so weiter. Wenn ich das ding interpretiere muss man ja erstmal gucken, ob da überhaupt sinnvolles drinn steht. Als erstes kann man ja mal ads '=' raus hauen, dass ist ja nur für die Verständlichkeit da. Dann steht da</p>
<p>v1 cp v2 v3 oder sonnstiges.</p>
<p>Das zweite Wort ist also der Befehl, das erste das Ziel der Rechnung und hinter dem zweiten Wort kommen die Parameter (zwischen 1 und 3)</p>
<p>Sollte ich eine Unterfunktion für jede Operation schreiben? Meine Idee wäre dann, zu gucken ob v1, v2 u.s.w. gültige Vektoren sind und z.B. ob ic nicht versuche eine Zahl in einen Vektor zu schreiben.</p>
<p>Ich glaube mit dem Stichwort parsen komm ich erstmal wesentlich weiter. <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="🙂"
    /> Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2319862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2319862</guid><dc:creator><![CDATA[ruhig_brauner]]></dc:creator><pubDate>Tue, 30 Apr 2013 11:41:28 GMT</pubDate></item></channel></rss>