<?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[String einlesen]]></title><description><![CDATA[<p>Hi,</p>
<p>ich würde gerne eine Benutzereingabe per Kommandozeile einlesen und in einem String ablegen. Ich muss dabei auch die Gültigkeit der Eingabe überprüfen. Gültige Befehle wären &quot;status&quot; oder &quot;quit&quot;, aber auch &quot;echo&quot; gefolgt von weiteren Parametern. Allerdings darf bei &quot;echo&quot; genau 1 Parameter angegeben werden, also zB echo Para1.</p>
<p>Ich kann ja einfach mit getline alles einlesen, da habe ich mit &quot;status&quot; oder &quot;quit&quot; kein Problem. Aber was mache ich im Falle von &quot;echo&quot;?</p>
<p>Liebe Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/301523/string-einlesen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 23:50:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/301523.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 29 Mar 2012 10:15:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to String einlesen on Thu, 29 Mar 2012 10:15:31 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich würde gerne eine Benutzereingabe per Kommandozeile einlesen und in einem String ablegen. Ich muss dabei auch die Gültigkeit der Eingabe überprüfen. Gültige Befehle wären &quot;status&quot; oder &quot;quit&quot;, aber auch &quot;echo&quot; gefolgt von weiteren Parametern. Allerdings darf bei &quot;echo&quot; genau 1 Parameter angegeben werden, also zB echo Para1.</p>
<p>Ich kann ja einfach mit getline alles einlesen, da habe ich mit &quot;status&quot; oder &quot;quit&quot; kein Problem. Aber was mache ich im Falle von &quot;echo&quot;?</p>
<p>Liebe Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196534</guid><dc:creator><![CDATA[WurzelAusZwei]]></dc:creator><pubDate>Thu, 29 Mar 2012 10:15:31 GMT</pubDate></item><item><title><![CDATA[Reply to String einlesen on Thu, 29 Mar 2012 10:44:51 GMT]]></title><description><![CDATA[<p>Teil die Zeilen an Leerzeichen auf, dann kannst du die Argumente zählen.</p>
<pre><code class="language-cpp">std::vector&lt;std::string&gt; split(std::string s, char delim)
{
    std::istringstream is(s);
    std::vector&lt;std::string&gt; result;

    while(std::getline(is, s, delim))
        result.push_back(s);

    return result;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2196536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196536</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 29 Mar 2012 10:44:51 GMT</pubDate></item><item><title><![CDATA[Reply to String einlesen on Thu, 29 Mar 2012 11:05:31 GMT]]></title><description><![CDATA[<p>Ein kleiner Quick-And-Dirty Kommandointerpreter:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt; 
#include &lt;sstream&gt;
#include &lt;string&gt;
#include &lt;map&gt;
#include &lt;functional&gt;

//das, was bei eingabe von status passieren soll
void status_command(std::istream &amp;)
{
    std::cout &lt;&lt; &quot;status command&quot; &lt;&lt; std::endl;
}

//das, was bei eingabe von echo passieren soll
void echo_command(std::istream &amp; s)
{
    int argument_of_echo_command;
    s &gt;&gt; argument_of_echo_command; //hier wird der parameter von echo ausgewertet
    std::cout &lt;&lt; &quot;echo command with &quot; &lt;&lt; argument_of_echo_command &lt;&lt; std::endl;
}

int main()
{
    //typ fuer commandofunktionen 
    typedef std::function&lt;void (std::istream &amp;)&gt; arg_parser_t;
    //map um commandos (also strings) auf die dafuer aufzurufende funktion zu mappen
    typedef std::map&lt;std::string, arg_parser_t&gt; command_map_t;

    command_map_t command_map;
    //ein paar kommandos definieren
    command_map.insert(std::make_pair(&quot;status&quot;, &amp;status_command));
    command_map.insert(std::make_pair(&quot;echo&quot;, &amp;echo_command));

    std::string command;
    //solange kein fehler und nicht quit
    while(std::getline(std::cin, command) &amp;&amp; command != &quot;quit&quot;)
    {
        std::istringstream isstr(command);
        //das kommando selbst holen (string bis zum ersten leerzeichen)
        isstr &gt;&gt; command;
        //nach dem kommando suchen
        command_map_t::const_iterator i = command_map.find(command);
        if(i != command_map.end())
        {
            //wenn gefunden: ausfuehren
            (i-&gt;second)(isstr);
        }
        else
        {
            //sonst fehler
            std::cerr &lt;&lt; &quot;Unknown command: &quot; &lt;&lt; command &lt;&lt; std::endl;
        }
    }
}
</code></pre>
<p>Etwas mehr Fehlerprüfung wäre noch gut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196540</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 29 Mar 2012 11:05:31 GMT</pubDate></item><item><title><![CDATA[Reply to String einlesen on Thu, 29 Mar 2012 11:24:46 GMT]]></title><description><![CDATA[<p>Vielen Dank! <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/2196546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196546</guid><dc:creator><![CDATA[WurzelAusZwei]]></dc:creator><pubDate>Thu, 29 Mar 2012 11:24:46 GMT</pubDate></item></channel></rss>