<?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[Eigene Konsole schreiben]]></title><description><![CDATA[<p>Guten Abend!</p>
<p>Ich möchte in C++ wie das Thema schon sagte eine Eigene Konsole schreiben.<br />
Sie soll dann nachher durch verschiedene Befehle gesteuert werden.</p>
<p>Meine Frage ist nun, wie öffnet man die Konsole sodass man die Befehle eingeben kann, die über eine Klasse/Methoden entstehen, auch verfügbar werden und nicht jeden Schritt im Quell-Code genau festlegen muss?</p>
<p>EDIT:</p>
<p>Also das das Programm praktisch Eigenständig darauf wartet das zum Beispiel der Befehl</p>
<pre><code>Auflisten(10,2,true)
</code></pre>
<p>und dann die/das entsprechende Auflistet.<br />
Sonst müsste man ja immer schreiben</p>
<pre><code>cout &lt;&lt; &quot;Geben sie den befehl ein...&quot; &lt;&lt; endl;
cin &gt;&gt; eingabe1;
if (eingabe1 == Auflisten(10,2,true)
{ cout &quot;.................und so weiter und so fort&quot; }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/246566/eigene-konsole-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 21:27:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/246566.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 29 Jul 2009 21:02:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eigene Konsole schreiben on Wed, 29 Jul 2009 21:13:05 GMT]]></title><description><![CDATA[<p>Guten Abend!</p>
<p>Ich möchte in C++ wie das Thema schon sagte eine Eigene Konsole schreiben.<br />
Sie soll dann nachher durch verschiedene Befehle gesteuert werden.</p>
<p>Meine Frage ist nun, wie öffnet man die Konsole sodass man die Befehle eingeben kann, die über eine Klasse/Methoden entstehen, auch verfügbar werden und nicht jeden Schritt im Quell-Code genau festlegen muss?</p>
<p>EDIT:</p>
<p>Also das das Programm praktisch Eigenständig darauf wartet das zum Beispiel der Befehl</p>
<pre><code>Auflisten(10,2,true)
</code></pre>
<p>und dann die/das entsprechende Auflistet.<br />
Sonst müsste man ja immer schreiben</p>
<pre><code>cout &lt;&lt; &quot;Geben sie den befehl ein...&quot; &lt;&lt; endl;
cin &gt;&gt; eingabe1;
if (eingabe1 == Auflisten(10,2,true)
{ cout &quot;.................und so weiter und so fort&quot; }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1751942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751942</guid><dc:creator><![CDATA[Alfons2]]></dc:creator><pubDate>Wed, 29 Jul 2009 21:13:05 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Konsole schreiben on Wed, 29 Jul 2009 21:30:58 GMT]]></title><description><![CDATA[<p>Du müsstest die Eingaben, die der User macht, komplett parsen und dann interpretieren. Wie kompliziert das Parsen sein wird hängt vom Sprachschatz deiner Konsole ab. Der Rest drumrum ist vergleichsweise einfach: Prompt ausgeben, Befehlszeile einlesen, parsen, ausführen. Und das alles in einer Schleife...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751954</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 29 Jul 2009 21:30:58 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Konsole schreiben on Wed, 29 Jul 2009 21:54:01 GMT]]></title><description><![CDATA[<p>Achso, ich werde mir deinen Beitrag mal kopieren und später darauf zurück kommen wenn ich meine C++ Kenntniss etwas erweitert habe ^^</p>
<p>Aber Danke für deine recht zügige Antwort</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751971</guid><dc:creator><![CDATA[Alfons2]]></dc:creator><pubDate>Wed, 29 Jul 2009 21:54:01 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Konsole schreiben on Wed, 29 Jul 2009 23:00:42 GMT]]></title><description><![CDATA[<p>Och, so schwer ist das gar nicht. Du solltest halt nicht damit anfangen, die beste Konsole/Shell der Welt zu schreiben, sondern eher in kleinen und schnellen Schritten vorwärts.</p>
<p>Ich geb dir mal ne Struktur vor <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="🤡"
    />:<br />
1. Grundgerüst, also einfache Schleife, vor jeder Eingabe wird &quot;&gt; &quot; (oder so) ausgegeben und du kannst Befehle einlesen (mit std::getline), ohne Parsing oder weitere Verarbeitung.</p>
<p>2. Du implementierst super-einfache Befehle, z.B. &quot;hallo&quot; und &quot;exit&quot;, wobei bei &quot;hallo&quot; auch irgendeine Begrüßung kommt, bei exit wird die Schleife und damit das Programm verlassen.</p>
<p>3. Du überlegst dir eine gute Struktur, die Befehle zu verarbeiten ( <code>if (str==&quot;hallo&quot;) {...} else if (str==&quot;exit&quot;) {...}</code> wäre z.B. nicht gut). Evtl bietet sich hier eine <a href="http://cplusplus.com/reference/stl/map/" rel="nofollow">map</a> an, die Strings nach Funktionszeigern mappt. Dann kannst du mit <code>if ( mymap.find(input) != mymap.end() )</code> rausfinden, ob der Befehl existiert und mit <code>mymap[input]();</code> die Funktion aufrufen, die dann den Befehl ausführt (also für jeden Befehl eine Funktion).</p>
<p>4. Argumente für die Befehle parsen, also bis Klammer ist der Befehl, danach bis zur hinteren Klammer die Texte zwischen den Kommata extrahieren. Die Texte bzw Parameter in <code>vector&lt;string&gt;</code> oder so speichern und der entsprechenden Befehlsfunktion mit übergeben. Die wertet die Parameter dann aus, also wandelt sie in entsprechend be-typ-te Variablen um und agiert dann je nach Parametern.</p>
<p>Oder so <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751987</guid><dc:creator><![CDATA[supp supp]]></dc:creator><pubDate>Wed, 29 Jul 2009 23:00:42 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Konsole schreiben on Wed, 29 Jul 2009 23:12:59 GMT]]></title><description><![CDATA[<p>Also Danke erstmal für deine bestimmt sehr ausführliche Antwort.</p>
<p>Nur leider bin ich sowas von Müde, das ich im Moment eine lange Leitung habe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> und den ganzen Text nur Teilweise verstanden habe. <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>
<p>Also Ich lese ihn heute Nachmittag nochmal und binde ihn in meine Konsole ein.</p>
<p>Aber ich habe mir das ungefähr so vorgestellt:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;
// Die Klassen
class Konto {
            public:     
                   const string ktonummer;
                   double kontostand;       
                   string inhaber;

                    // Konstruktoren innerhalb der Klasse
                    Konto(string ktonr);                  
                    Konto(double betrag, string ktonr);       

                    //Methoden innerhalb der Klasse                      
                    void standAuslesen();
                    void ktonrAbfragen();  
};      

// Konstruktor
Konto::Konto(string ktonr):
    //Initialisierung
    ktonummer (ktonr),
    kontostand(0)                                    
{                       
        cout &lt;&lt; &quot;Konto wird eroeffnet&quot; &lt;&lt; endl;                                                         
}

Konto::Konto(double betrag, string ktonr):
    //Initialisierung                       // Die Initialisiererlisten können unter
    ktonummer (ktonr),                      // anderem konstante Werte definieren!
    kontostand(betrag)                      // Außerdem erhöht sie die Perfomance.            
{
    kontostand = betrag;          
    cout &lt;&lt; &quot;Konto wird eroeffnet&quot; &lt;&lt; endl;
}

// Methoden
void Konto::standAuslesen()
{
cout &lt;&lt; &quot;Kontostand: &quot; &lt;&lt; kontostand &lt;&lt; endl;
}

void Konto::ktonrAbfragen()
{
cout &lt;&lt; &quot;Ihre Kontonummer ist: &quot; &lt;&lt; ktonummer &lt;&lt; endl;
}

// Hauptprogramm
int main(int argc, char *argv[])
{
    Konto kto( 11.50 , &quot;0001&quot; );     
    kto.standAuslesen();
    kto.ktonrAbfragen();

    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}
</code></pre>
<p>Den Code habe ich zwar nicht ganz alleine verfasst, aber ich verstehe in ganz!<br />
und so dachte ich mir das:<br />
Ich wollte mit den Klassen verschiedene Befehle einrichten die ich dann in der Shell ausführe, aber das überlege ich mir halt heute Nachmittag wie ich das am geschicktesten anstelle</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751991</guid><dc:creator><![CDATA[Alfons2]]></dc:creator><pubDate>Wed, 29 Jul 2009 23:12:59 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Konsole schreiben on Thu, 30 Jul 2009 05:26:38 GMT]]></title><description><![CDATA[<p>Hm wie wärs wenn man die Befehle einfach entgegen nimmt und in std::string speichert.Und das dann am besten in ne Zahl umwandeln und dann für die Befehle Zahlen festlegen und dann mit ner Switchanweisung abfragen, was eingetippt wurde und dann dementsprechend handeln?<br />
(String in Int verwandeln hab ich zwar selbst noch nicht gemacht, aber wurde glaub ich schon ein paar mal Threads dazu erstelllt...kannst ja mal gcuken)</p>
<p>Nur so ne Idee von mir</p>
<p>mfg<br />
Finn</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1752020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1752020</guid><dc:creator><![CDATA[Finn]]></dc:creator><pubDate>Thu, 30 Jul 2009 05:26:38 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Konsole schreiben on Thu, 30 Jul 2009 07:30:15 GMT]]></title><description><![CDATA[<p>Finn schrieb:</p>
<blockquote>
<p>Hm wie wärs wenn man die Befehle einfach entgegen nimmt und in std::string speichert.Und das dann am besten in ne Zahl umwandeln und dann für die Befehle Zahlen festlegen und dann mit ner Switchanweisung abfragen, was eingetippt wurde und dann dementsprechend handeln?<br />
(String in Int verwandeln hab ich zwar selbst noch nicht gemacht, aber wurde glaub ich schon ein paar mal Threads dazu erstelllt...kannst ja mal gcuken)</p>
<p>Nur so ne Idee von mir</p>
<p>mfg<br />
Finn</p>
</blockquote>
<p>Dann wird das aber schwierig, falls die shell später mal mehr als nur einfache interne Befehle verarbeiten soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1752058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1752058</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 30 Jul 2009 07:30:15 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Konsole schreiben on Thu, 30 Jul 2009 22:14:04 GMT]]></title><description><![CDATA[<p>Sie soll eigentlich so eine Art Mathematik Datenbank werden, also</p>
<p>Es gibt eine Klasse Mathe. In dieser Klasse sind z.B. Quadrat, Rechteck, Dreieck.</p>
<p>So wenn man nun die Methode Flächeninhalt aufruft und die Länge und Breite des Rechteckes an diese Methode mit Parametern/Argumenten übergibt dann soll er den Flächeninhalt ausrechnen.</p>
<p>Das ganze soll natürlich komplexer werden und viel mehr ausrechnen können als nur Flächeninhalt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1752678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1752678</guid><dc:creator><![CDATA[AlfonsT]]></dc:creator><pubDate>Thu, 30 Jul 2009 22:14:04 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Konsole schreiben on Fri, 31 Jul 2009 05:15:19 GMT]]></title><description><![CDATA[<p>Na dann kannst dus sdoch auch so machen:<br />
Einfach mit cout ausgeben was es für Wahlmöglichkeiten gibt und dann soll man z.B. für die Flächenberechnung von nem Dreieck die '1' drücken...oder halt für was anderes die 2,3,...etc.<br />
Und nachdem du dann mit ner switchanweisung herausgefunden hast, was der Benutzer eigetnlich will, dann starte in diesem Fall jetzt einfach die Funktion Dreiecksfläche_berechnen();..nur als Beispiel<br />
(So oder so ähnlich kannstes ja machen...außerdem is das Benutzerfreundlicher als so ne Konsole mit befehleingaben^^)<br />
mfg<br />
Finn</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1752729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1752729</guid><dc:creator><![CDATA[Finn]]></dc:creator><pubDate>Fri, 31 Jul 2009 05:15:19 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Konsole schreiben on Fri, 31 Jul 2009 06:06:16 GMT]]></title><description><![CDATA[<p>Finn schrieb:</p>
<blockquote>
<p>[...]<br />
So oder so ähnlich kannstes ja machen...außerdem is das Benutzerfreundlicher als so ne Konsole mit befehleingaben^^</p>
</blockquote>
<p>ARGH! Nur weil die Windows-Konsole Benutzerunfreundlich ist, heißt es noch lange nciht, dass Konsolen(-artige) Benutzerunfreundlich sind!<br />
Ich bedauere schon den armen Programmierer, der ein neues Kommando einfügen soll. Erst in dem switch rumwühlen, dann nen neuen Menüpunkt hinzufügen, usw. Unnötig und Fehleranfällig.</p>
<p>Außerdem wird das verdammt unhandlich für den Anwender, wenn es mal mehr als 10 Kommandos gibt. Und die Parametereingabe ist unter aller Sau.<br />
Um zu addieren muss der erste Parameter abgefragt werden, dann der zweite, ab hier immer wieder nach nem neuen. USW.</p>
<p>Hier ist definitiv deine Herangehensweise benutzerunfreundlich <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="😉"
    /><br />
Oh, mach ein Kommando &quot;help&quot;, mit dem man sich alle Kommandos anzeigen lässt, und &quot;help $kommando&quot; um Hilfe zu dem Kommando anzuzeigen. Letztere kommt natürlich aus der Kommandoklasse selber.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1752738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1752738</guid><dc:creator><![CDATA[Orakel-Joe]]></dc:creator><pubDate>Fri, 31 Jul 2009 06:06:16 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Konsole schreiben on Fri, 31 Jul 2009 12:20:38 GMT]]></title><description><![CDATA[<p>Hi, Finn deine Idee ist im Grunde zwar nicht schlecht, aber für mein Projekt eher nicht sinnvoll. Es soll ja nicht nur Flächenberrechnung sein, wenn später dann nochmal Berrechnung der Höhe, Satz des Pythagoras, usw. dazu kommt wird es sehr unübersichtlich, einerseitz für den Benutzer, aber auch für den Programmierer wenn er mal das Programm weiter schreiben will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1752916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1752916</guid><dc:creator><![CDATA[Alfons2]]></dc:creator><pubDate>Fri, 31 Jul 2009 12:20:38 GMT</pubDate></item><item><title><![CDATA[Reply to Eigene Konsole schreiben on Fri, 31 Jul 2009 16:22:58 GMT]]></title><description><![CDATA[<p>So, ich habe schon mal angefangen mit dem schreiben des Programmes.<br />
Ich bin natürlich noch laaange nicht fertig aber das ist der Grobe aufbau wie ich es machen werde (Alles noch ohne Konsole und damit noch total unflexibel).</p>
<p><a href="http://uploaded.to/file/o6ve46" rel="nofollow">Das Programm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1753089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1753089</guid><dc:creator><![CDATA[Alfons2]]></dc:creator><pubDate>Fri, 31 Jul 2009 16:22:58 GMT</pubDate></item></channel></rss>