<?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[Konsolen eingabe in Binärdatei schreiben]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche gerade die Benutzereingabe aus der Konsole in eine Binärdatei zu schreiben, mit folgendem Code:</p>
<pre><code>void DateiVerwaltung::writeBin()
{
    std::ofstream file;
    std::string eingabe;

    int nZahl;
    float fZahl;
    char c;

    file.open(binDatei, std::ios::out | std::ios::binary);
    do {
        std::cout &lt;&lt; &quot;Wert: &quot;;
        std::cin &gt;&gt; eingabe;
        if( (sscanf(eingabe.c_str(), &quot;%f&quot;, &amp;fZahl)) == 1 &amp;&amp; eingabe.find(&quot;.&quot;) != std::string::npos ) {
            file.write((char*)&amp;fZahl, sizeof(float));
            std::cout &lt;&lt; &quot;Float geschrieben&quot; &lt;&lt; std::endl;
        }
        else if( (sscanf(eingabe.c_str(), &quot;%d&quot;, &amp;nZahl)) == 1) {
            file.write((char*)&amp;nZahl, sizeof(int));
            std::cout &lt;&lt; &quot;int geschrieben&quot; &lt;&lt; std::endl;
        }
        else if( eingabe.length() == 1 &amp;&amp; (sscanf(eingabe.c_str(), &quot;%c&quot;, &amp;c)) == 1) {
            file.write((char*)&amp;c, sizeof(char));
            std::cout &lt;&lt; &quot;char geschrieben&quot; &lt;&lt; std::endl;
        }
        else {
            file.write( eingabe.c_str(), sizeof(char)*eingabe.length());
            std::cout &lt;&lt; &quot;string geschrieben&quot; &lt;&lt; std::endl;
        }

        std::cout &lt;&lt; &quot;weiteren Wert hinzufuegen? (j/n): &quot;;
        std::cin &gt;&gt; eingabe;
        if(eingabe == &quot;n&quot; || eingabe == &quot;N&quot;)
            break;

    } while(true);

    file.close();
}
</code></pre>
<p>Frage: Ist das soweit OK? und wenn ja gibt es da evtl. bessere/schönere Möglichkeiten die Eingabe richtig zu konvertieren ohne den Benutzer nach dem Datentyp zufragen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/320908/konsolen-eingabe-in-binärdatei-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 14:06:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/320908.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 16 Oct 2013 19:06:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konsolen eingabe in Binärdatei schreiben on Wed, 16 Oct 2013 19:06:14 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche gerade die Benutzereingabe aus der Konsole in eine Binärdatei zu schreiben, mit folgendem Code:</p>
<pre><code>void DateiVerwaltung::writeBin()
{
    std::ofstream file;
    std::string eingabe;

    int nZahl;
    float fZahl;
    char c;

    file.open(binDatei, std::ios::out | std::ios::binary);
    do {
        std::cout &lt;&lt; &quot;Wert: &quot;;
        std::cin &gt;&gt; eingabe;
        if( (sscanf(eingabe.c_str(), &quot;%f&quot;, &amp;fZahl)) == 1 &amp;&amp; eingabe.find(&quot;.&quot;) != std::string::npos ) {
            file.write((char*)&amp;fZahl, sizeof(float));
            std::cout &lt;&lt; &quot;Float geschrieben&quot; &lt;&lt; std::endl;
        }
        else if( (sscanf(eingabe.c_str(), &quot;%d&quot;, &amp;nZahl)) == 1) {
            file.write((char*)&amp;nZahl, sizeof(int));
            std::cout &lt;&lt; &quot;int geschrieben&quot; &lt;&lt; std::endl;
        }
        else if( eingabe.length() == 1 &amp;&amp; (sscanf(eingabe.c_str(), &quot;%c&quot;, &amp;c)) == 1) {
            file.write((char*)&amp;c, sizeof(char));
            std::cout &lt;&lt; &quot;char geschrieben&quot; &lt;&lt; std::endl;
        }
        else {
            file.write( eingabe.c_str(), sizeof(char)*eingabe.length());
            std::cout &lt;&lt; &quot;string geschrieben&quot; &lt;&lt; std::endl;
        }

        std::cout &lt;&lt; &quot;weiteren Wert hinzufuegen? (j/n): &quot;;
        std::cin &gt;&gt; eingabe;
        if(eingabe == &quot;n&quot; || eingabe == &quot;N&quot;)
            break;

    } while(true);

    file.close();
}
</code></pre>
<p>Frage: Ist das soweit OK? und wenn ja gibt es da evtl. bessere/schönere Möglichkeiten die Eingabe richtig zu konvertieren ohne den Benutzer nach dem Datentyp zufragen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2360776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2360776</guid><dc:creator><![CDATA[DKlay13]]></dc:creator><pubDate>Wed, 16 Oct 2013 19:06:14 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen eingabe in Binärdatei schreiben on Wed, 16 Oct 2013 19:16:08 GMT]]></title><description><![CDATA[<p>hm... gibt es einen Grund für</p>
<pre><code>if( (sscanf(eingabe.c_str(), &quot;%f&quot;, &amp;fZahl)) == 1 &amp;&amp; eingabe.find(&quot;.&quot;) != std::string::npos )
</code></pre>
<p>ginge doch auch</p>
<pre><code>if(cin &gt;&gt; f){
            // do something here
      }
</code></pre>
<p>wieso multiplizierst du die Anzahl der Elemente mit char?<br />
Die Anzahl bleibt doch eh immer gleich <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2360780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2360780</guid><dc:creator><![CDATA[BinärerBär]]></dc:creator><pubDate>Wed, 16 Oct 2013 19:16:08 GMT</pubDate></item><item><title><![CDATA[Reply to Konsolen eingabe in Binärdatei schreiben on Wed, 16 Oct 2013 19:21:03 GMT]]></title><description><![CDATA[<p>Ist den die Bedingung</p>
<pre><code>if(cin &gt;&gt; f){
            // do something here
      }
</code></pre>
<p>dann nicht immer Wahr? Es sollen ja 4 verschiedene Typen gespeichert werden... <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="😕"
    /></p>
<p>sizeof(char) == 1 Byte und string hat doch X Bytes</p>
<p>Evtl. noch zur Info die Datei soll später wieder gelesen werden und die Werte auf der Konsole ausgegeben werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2360782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2360782</guid><dc:creator><![CDATA[DKlay13]]></dc:creator><pubDate>Wed, 16 Oct 2013 19:21:03 GMT</pubDate></item></channel></rss>