<?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[unerwünschte Tastaturaufforderung]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bekomme hier beim ersten rekursiven Aufruf von loescheAdresse() eine Tastaturabfrage, bevor wieder &quot;Name eingeben: &quot; in findeAdresse() erscheint. Die cin.clear() Konstruktion kann ich nicht entfernen. Was kann ich da machen?</p>
<pre><code class="language-cpp">Treffer findeAdresse(string verzeichnis, vector &lt;string&gt; adressnamen){
    Treffer f;
    f.treffer = 0;
    string such;
    cin.clear();
    cin.ignore(numeric_limits&lt;streamsize&gt;::max(),'\n');
    cout &lt;&lt; endl &lt;&lt; &quot;Name eingeben: &quot;;
    getline(cin, such, '\n');
    if (such == &quot;0&quot;) return f;
    for (int i=0; i&lt;adressnamen.size(); i++){
        if (finden(such, adressnamen.at(i))){
            zeigeAdresse(verzeichnis, adressnamen.at(i));
            f.treffer ++;
            f.zeiger = i;
        }
    }
    if (f.treffer == 0) cout &lt;&lt; endl &lt;&lt; &quot;Adresse nicht gefunden.&quot; &lt;&lt; endl;
    return f;
}

void loescheAdresse(string verzeichnis, vector &lt;string&gt; &amp;adressnamen){
    Treffer l = findeAdresse(verzeichnis, adressnamen);
    if (l.treffer == 1){
        cout &lt;&lt; endl &lt;&lt; &quot;loeschen? [j] &quot;;
        char ja = cin.get();
        if (ja == 'j'){
            loescheDatei(verzeichnis, adressnamen.at(l.zeiger));
            adressnamen.erase(adressnamen.begin() + l.zeiger);
            schreibeIndex(verzeichnis, adressnamen);
        }
    }
    if (l.treffer &gt; 1){
        cout &lt;&lt; endl;
        cout &lt;&lt; &quot;Es wurden mehrere Adressen gefunden.&quot; &lt;&lt; endl;
        cout &lt;&lt; &quot;Welche ist gemeint?&quot; &lt;&lt; endl &lt;&lt; &quot;[taste]&quot;;
        loescheAdresse(verzeichnis, adressnamen);
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/281708/unerwünschte-tastaturaufforderung</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 15:46:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/281708.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 Feb 2011 16:21:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to unerwünschte Tastaturaufforderung on Sun, 06 Feb 2011 16:22:23 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bekomme hier beim ersten rekursiven Aufruf von loescheAdresse() eine Tastaturabfrage, bevor wieder &quot;Name eingeben: &quot; in findeAdresse() erscheint. Die cin.clear() Konstruktion kann ich nicht entfernen. Was kann ich da machen?</p>
<pre><code class="language-cpp">Treffer findeAdresse(string verzeichnis, vector &lt;string&gt; adressnamen){
    Treffer f;
    f.treffer = 0;
    string such;
    cin.clear();
    cin.ignore(numeric_limits&lt;streamsize&gt;::max(),'\n');
    cout &lt;&lt; endl &lt;&lt; &quot;Name eingeben: &quot;;
    getline(cin, such, '\n');
    if (such == &quot;0&quot;) return f;
    for (int i=0; i&lt;adressnamen.size(); i++){
        if (finden(such, adressnamen.at(i))){
            zeigeAdresse(verzeichnis, adressnamen.at(i));
            f.treffer ++;
            f.zeiger = i;
        }
    }
    if (f.treffer == 0) cout &lt;&lt; endl &lt;&lt; &quot;Adresse nicht gefunden.&quot; &lt;&lt; endl;
    return f;
}

void loescheAdresse(string verzeichnis, vector &lt;string&gt; &amp;adressnamen){
    Treffer l = findeAdresse(verzeichnis, adressnamen);
    if (l.treffer == 1){
        cout &lt;&lt; endl &lt;&lt; &quot;loeschen? [j] &quot;;
        char ja = cin.get();
        if (ja == 'j'){
            loescheDatei(verzeichnis, adressnamen.at(l.zeiger));
            adressnamen.erase(adressnamen.begin() + l.zeiger);
            schreibeIndex(verzeichnis, adressnamen);
        }
    }
    if (l.treffer &gt; 1){
        cout &lt;&lt; endl;
        cout &lt;&lt; &quot;Es wurden mehrere Adressen gefunden.&quot; &lt;&lt; endl;
        cout &lt;&lt; &quot;Welche ist gemeint?&quot; &lt;&lt; endl &lt;&lt; &quot;[taste]&quot;;
        loescheAdresse(verzeichnis, adressnamen);
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2017393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017393</guid><dc:creator><![CDATA[zeropage]]></dc:creator><pubDate>Sun, 06 Feb 2011 16:22:23 GMT</pubDate></item><item><title><![CDATA[Reply to unerwünschte Tastaturaufforderung on Sun, 06 Feb 2011 21:45:07 GMT]]></title><description><![CDATA[<p>Ich konnte mein Problem lösen. Ich muss die cin.clear() Konstruktion in die main, vor dem ersten Aufruf von loescheAdresse() setzen und dafür aus der Funktion raus.</p>
<p>Kann man diese Konstruktion eigentlich mit 'Verwerfen/Zurücksetzen des Instreams' beschreiben?</p>
<p>EDIT: Gerade bemerkt, wenn ich stattdessen cin.sync() verwende, brauche ich gar nichts umzusetzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2017548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2017548</guid><dc:creator><![CDATA[zeropage]]></dc:creator><pubDate>Sun, 06 Feb 2011 21:45:07 GMT</pubDate></item></channel></rss>