<?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[Schleife bricht nicht ab&#x2F;startet immer wieder neu??]]></title><description><![CDATA[<p>Hallo,ich bin im Moment ein ganz einfaches Vokabelprogramm zu schreiben. Mein Problem liegt bei zeile 114 bis 118 oder bei der Schleife selbst. Wenn ich an der entsprechenden Stelle bin und 0 eingebe kommt auch &quot;fertig&quot; das heißt die Anweisungen im If... werden ausgeführt, meine erste annahme war, die schleife bricht nicht ab sie reagiert weder darauf, dass ich die Bedingung durch fertig=1; eigentlich ausser kraft setze noch auf das break. Aber die schleife beginnt von vorne: also das Programm wird ab spätestens Zeile 70 weiter geführt. Die Ausgabe von Zeile 14-19 kommen jedoch nicht noch einmal.<br />
Ich bedanke mich schon einmal führ euer Bemühen, bin im Moment echt ratlos... <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="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Moritz</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;conio.h&gt;

using namespace std;
char foo[10];
int main (){
int zahl, i, ia, fertig, zeilnr, eingabe, blah;
string zeile, nichts, voc[5000] [10];
ifstream dat_ein;
blah=0;
while(blah==0){
cout&lt;&lt;&quot;Vollgende Eingaben stehen zur Auswahl: \n&quot;;
cout&lt;&lt;&quot;0 : Beenden \n&quot;;
cout&lt;&lt;&quot;1 : Datei einlesen \n&quot;;
cout&lt;&lt;&quot;2 : abfragen \n&quot;;
cout&lt;&lt;&quot;3 : nicht gewusste abfragen \n&quot;;
cout&lt;&lt;&quot;4 : falsche abfragen \n&quot;;

cin&gt;&gt; eingabe;

//cout&lt;&lt;&quot;iwas\n&quot;;
switch(eingabe){
case 0:
return 0;
break;
case 1:
dat_ein.open(&quot;vok.txt&quot;);
if(!dat_ein){
cout&lt;&lt;&quot;error\n&quot;;	
}

fertig=0;
i=0;
while(fertig==0){
std::getline(dat_ein, zeile);
if(zeile==&quot;endat&quot;){
fertig=1;
break;
}
else{
if(atoi(zeile.c_str())&lt;40 || atoi(zeile.c_str()) &gt; 50){
itoa(i, foo, 10);
voc [i] [0] = foo;
//cout&lt;&lt;voc [i] [0];
//cout&lt;&lt;&quot;\n&quot;;
//cout&lt;&lt; i;
//cout&lt;&lt;&quot;\n&quot;;
voc [i] [1] = zeile;
std::getline(dat_ein, voc [i] [2]);
voc [i] [3] = &quot;0&quot;;
voc [i] [4] = &quot;0&quot;;
voc [i] [5] = &quot;0&quot;;
cout&lt;&lt;&quot;Lese Datensatz &quot;;
cout&lt;&lt; i;
cout&lt;&lt;&quot; \n&quot;;
i++;
}

}

}
break;

case 2:
i=0;
ia=0;
fertig=0;
while(i == atoi(voc [i] [0].c_str())){
voc [i][5] = &quot;0&quot;;
i++;
}
i=0;
while(fertig==0){
fertig=1;
ia=0;
while(ia==atoi(voc [ia][0].c_str())){
if(atoi(voc [ia][5].c_str())==0){
fertig=0;
//cout&lt;&lt;&quot;fertig=0\n&quot;;
}
ia++;
//cout&lt;&lt;&quot;while\n&quot;;
//cout&lt;&lt;ia;
//cout&lt;&lt;&quot; &quot;;
//cout&lt;&lt;voc [ia] [0];
//cout&lt;&lt;&quot;\n&quot;;
}
zahl=i;
voc [zahl] [5] = &quot;1&quot;;
cout&lt;&lt;voc[zahl][1];
cout&lt;&lt;&quot;\n&quot;;
getch();
//cin&gt;&gt;nichts;
cout&lt;&lt;&quot;\n&quot;;
cout&lt;&lt;voc[zahl][2];
cout&lt;&lt;&quot;\n&quot;;
cout&lt;&lt;&quot;1: Richtig \n&quot;;
cout&lt;&lt;&quot;2: Falsch \n&quot;;
cin&gt;&gt;nichts;
if(atoi(nichts.c_str())==1){
	voc [zahl][3] = atoi(voc[zahl][3].c_str())+1;
}

if(atoi(nichts.c_str())==2){
voc [zahl][4] = atoi(voc[zahl][4].c_str())+1;
}
if(nichts==&quot;0&quot;){

fertig=1;
cout&lt;&lt;&quot;fertig\n&quot;;
}
i++;
//cout&lt;&lt;&quot;nechste\n&quot;;
}

case 3:
//nicht gewusste	

	i=0;
	ia=0;
	fertig=0;
	while(i == atoi(voc [i] [0].c_str())){
	voc [i][5] = &quot;0&quot;;
	i++;
	}
	i=0;
	while(fertig==0){
	fertig=1;
	ia=0;
	while(ia==atoi(voc [ia][0].c_str())){
	if(atoi(voc [ia][3].c_str())==0){
	fertig=0;
	//cout&lt;&lt;&quot;fertig=0\n&quot;;
	}
	ia++;
	//cout&lt;&lt;&quot;while\n&quot;;
	//cout&lt;&lt;ia;
	//cout&lt;&lt;&quot; &quot;;
	//cout&lt;&lt;voc [ia] [0];
	//cout&lt;&lt;&quot;\n&quot;;
	}
	zahl=i;
	if(atoi(voc [zahl] [3].c_str()) == 0){
	voc [zahl] [5] = &quot;1&quot;;
	cout&lt;&lt;voc[zahl][1];
	cout&lt;&lt;&quot;\n&quot;;
	getch();
	//cin&gt;&gt;nichts;
	cout&lt;&lt;&quot;\n&quot;;
	cout&lt;&lt;voc[zahl][2];
	cout&lt;&lt;&quot;\n&quot;;
	cout&lt;&lt;&quot;1: Richtig \n&quot;;
	cout&lt;&lt;&quot;2: Falsch \n&quot;;
	cin&gt;&gt;nichts;
	if(atoi(nichts.c_str())==1){
		voc [zahl][3] = atoi(voc[zahl][3].c_str())+1;
	}

	if(atoi(nichts.c_str())==2){
	voc [zahl][4] = atoi(voc[zahl][4].c_str())+1;
	}
	}
	i++;
	//cout&lt;&lt;&quot;nechste\n&quot;;
	}

break;

}

}
cin&gt;&gt;nichts;
return 0;	
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/193609/schleife-bricht-nicht-ab-startet-immer-wieder-neu</link><generator>RSS for Node</generator><lastBuildDate>Mon, 28 Sep 2026 05:13:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/193609.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 27 Sep 2007 19:58:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schleife bricht nicht ab&#x2F;startet immer wieder neu?? on Thu, 27 Sep 2007 19:58:18 GMT]]></title><description><![CDATA[<p>Hallo,ich bin im Moment ein ganz einfaches Vokabelprogramm zu schreiben. Mein Problem liegt bei zeile 114 bis 118 oder bei der Schleife selbst. Wenn ich an der entsprechenden Stelle bin und 0 eingebe kommt auch &quot;fertig&quot; das heißt die Anweisungen im If... werden ausgeführt, meine erste annahme war, die schleife bricht nicht ab sie reagiert weder darauf, dass ich die Bedingung durch fertig=1; eigentlich ausser kraft setze noch auf das break. Aber die schleife beginnt von vorne: also das Programm wird ab spätestens Zeile 70 weiter geführt. Die Ausgabe von Zeile 14-19 kommen jedoch nicht noch einmal.<br />
Ich bedanke mich schon einmal führ euer Bemühen, bin im Moment echt ratlos... <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="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Moritz</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;conio.h&gt;

using namespace std;
char foo[10];
int main (){
int zahl, i, ia, fertig, zeilnr, eingabe, blah;
string zeile, nichts, voc[5000] [10];
ifstream dat_ein;
blah=0;
while(blah==0){
cout&lt;&lt;&quot;Vollgende Eingaben stehen zur Auswahl: \n&quot;;
cout&lt;&lt;&quot;0 : Beenden \n&quot;;
cout&lt;&lt;&quot;1 : Datei einlesen \n&quot;;
cout&lt;&lt;&quot;2 : abfragen \n&quot;;
cout&lt;&lt;&quot;3 : nicht gewusste abfragen \n&quot;;
cout&lt;&lt;&quot;4 : falsche abfragen \n&quot;;

cin&gt;&gt; eingabe;

//cout&lt;&lt;&quot;iwas\n&quot;;
switch(eingabe){
case 0:
return 0;
break;
case 1:
dat_ein.open(&quot;vok.txt&quot;);
if(!dat_ein){
cout&lt;&lt;&quot;error\n&quot;;	
}

fertig=0;
i=0;
while(fertig==0){
std::getline(dat_ein, zeile);
if(zeile==&quot;endat&quot;){
fertig=1;
break;
}
else{
if(atoi(zeile.c_str())&lt;40 || atoi(zeile.c_str()) &gt; 50){
itoa(i, foo, 10);
voc [i] [0] = foo;
//cout&lt;&lt;voc [i] [0];
//cout&lt;&lt;&quot;\n&quot;;
//cout&lt;&lt; i;
//cout&lt;&lt;&quot;\n&quot;;
voc [i] [1] = zeile;
std::getline(dat_ein, voc [i] [2]);
voc [i] [3] = &quot;0&quot;;
voc [i] [4] = &quot;0&quot;;
voc [i] [5] = &quot;0&quot;;
cout&lt;&lt;&quot;Lese Datensatz &quot;;
cout&lt;&lt; i;
cout&lt;&lt;&quot; \n&quot;;
i++;
}

}

}
break;

case 2:
i=0;
ia=0;
fertig=0;
while(i == atoi(voc [i] [0].c_str())){
voc [i][5] = &quot;0&quot;;
i++;
}
i=0;
while(fertig==0){
fertig=1;
ia=0;
while(ia==atoi(voc [ia][0].c_str())){
if(atoi(voc [ia][5].c_str())==0){
fertig=0;
//cout&lt;&lt;&quot;fertig=0\n&quot;;
}
ia++;
//cout&lt;&lt;&quot;while\n&quot;;
//cout&lt;&lt;ia;
//cout&lt;&lt;&quot; &quot;;
//cout&lt;&lt;voc [ia] [0];
//cout&lt;&lt;&quot;\n&quot;;
}
zahl=i;
voc [zahl] [5] = &quot;1&quot;;
cout&lt;&lt;voc[zahl][1];
cout&lt;&lt;&quot;\n&quot;;
getch();
//cin&gt;&gt;nichts;
cout&lt;&lt;&quot;\n&quot;;
cout&lt;&lt;voc[zahl][2];
cout&lt;&lt;&quot;\n&quot;;
cout&lt;&lt;&quot;1: Richtig \n&quot;;
cout&lt;&lt;&quot;2: Falsch \n&quot;;
cin&gt;&gt;nichts;
if(atoi(nichts.c_str())==1){
	voc [zahl][3] = atoi(voc[zahl][3].c_str())+1;
}

if(atoi(nichts.c_str())==2){
voc [zahl][4] = atoi(voc[zahl][4].c_str())+1;
}
if(nichts==&quot;0&quot;){

fertig=1;
cout&lt;&lt;&quot;fertig\n&quot;;
}
i++;
//cout&lt;&lt;&quot;nechste\n&quot;;
}

case 3:
//nicht gewusste	

	i=0;
	ia=0;
	fertig=0;
	while(i == atoi(voc [i] [0].c_str())){
	voc [i][5] = &quot;0&quot;;
	i++;
	}
	i=0;
	while(fertig==0){
	fertig=1;
	ia=0;
	while(ia==atoi(voc [ia][0].c_str())){
	if(atoi(voc [ia][3].c_str())==0){
	fertig=0;
	//cout&lt;&lt;&quot;fertig=0\n&quot;;
	}
	ia++;
	//cout&lt;&lt;&quot;while\n&quot;;
	//cout&lt;&lt;ia;
	//cout&lt;&lt;&quot; &quot;;
	//cout&lt;&lt;voc [ia] [0];
	//cout&lt;&lt;&quot;\n&quot;;
	}
	zahl=i;
	if(atoi(voc [zahl] [3].c_str()) == 0){
	voc [zahl] [5] = &quot;1&quot;;
	cout&lt;&lt;voc[zahl][1];
	cout&lt;&lt;&quot;\n&quot;;
	getch();
	//cin&gt;&gt;nichts;
	cout&lt;&lt;&quot;\n&quot;;
	cout&lt;&lt;voc[zahl][2];
	cout&lt;&lt;&quot;\n&quot;;
	cout&lt;&lt;&quot;1: Richtig \n&quot;;
	cout&lt;&lt;&quot;2: Falsch \n&quot;;
	cin&gt;&gt;nichts;
	if(atoi(nichts.c_str())==1){
		voc [zahl][3] = atoi(voc[zahl][3].c_str())+1;
	}

	if(atoi(nichts.c_str())==2){
	voc [zahl][4] = atoi(voc[zahl][4].c_str())+1;
	}
	}
	i++;
	//cout&lt;&lt;&quot;nechste\n&quot;;
	}

break;

}

}
cin&gt;&gt;nichts;
return 0;	
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1374059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1374059</guid><dc:creator><![CDATA[moritz92]]></dc:creator><pubDate>Thu, 27 Sep 2007 19:58:18 GMT</pubDate></item><item><title><![CDATA[Reply to Schleife bricht nicht ab&#x2F;startet immer wieder neu?? on Thu, 27 Sep 2007 20:51:04 GMT]]></title><description><![CDATA[<p>bei der formatierung will ich das nicht anschauen.</p>
<p>schon mal nen debugger verwendet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1374073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1374073</guid><dc:creator><![CDATA[och nö]]></dc:creator><pubDate>Thu, 27 Sep 2007 20:51:04 GMT</pubDate></item><item><title><![CDATA[Reply to Schleife bricht nicht ab&#x2F;startet immer wieder neu?? on Thu, 27 Sep 2007 21:09:11 GMT]]></title><description><![CDATA[<p>Jetzt mal im Ernst, wer tut sich 200 Zeilen grausig formatierten Quelltext freiwillig (ohne Bezahlung) an?</p>
<p>Anscheinend blickst du ja selbst durch den Quelltext nicht mehr durch.</p>
<p>Mein Vorschlag ist, schreib das ganze Ding von Grund auf neu und beachte dabei folgendes:</p>
<p>1. Sinnvolle Einrückungen (TAB-Taste benutzen)<br />
2. Refaktorisieren - Den Quellcode in mehrere seperate Bestandteile aufspalten.<br />
3. Globale Variablen brauchst du hier nicht.</p>
<p>Zu 2.:</p>
<p>Keine Code-Monster wie</p>
<pre><code class="language-cpp">switch(foo) {
    case bar1:
        // Hier denke man sich weiteren Quelltext, so ungefähr 50 Zeilen
    case bar2:
        // Hier noch mal 39
}
</code></pre>
<p>Verwendung von Funktionen schaffen hier mehr Überblick:</p>
<pre><code class="language-cpp">switch(foo) {
    case bar1:
        tuDies();
        break;
    case bar2:
        tuJenes();
        break;
}
</code></pre>
<p>Grüße...</p>
<p>Heiko</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1374078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1374078</guid><dc:creator><![CDATA[bwbg]]></dc:creator><pubDate>Thu, 27 Sep 2007 21:09:11 GMT</pubDate></item><item><title><![CDATA[Reply to Schleife bricht nicht ab&#x2F;startet immer wieder neu?? on Fri, 28 Sep 2007 02:45:53 GMT]]></title><description><![CDATA[<p>och nö schrieb:</p>
<blockquote>
<p>bei der formatierung will ich das nicht anschauen.</p>
</blockquote>
<p>Ich hab's mal spasseshalber ins Studio 2005 reinkopiert, format selection rüberlaufen lassen und die cases per VAX als funktionen rausfaktorisiert.<br />
Es bleibt grauslich <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><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/15462">@moritz92</a> : vor dem &quot;case 3&quot; der äusseren Schleife fehlt ein break <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1374129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1374129</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 28 Sep 2007 02:45:53 GMT</pubDate></item><item><title><![CDATA[Reply to Schleife bricht nicht ab&#x2F;startet immer wieder neu?? on Fri, 28 Sep 2007 04:54:46 GMT]]></title><description><![CDATA[<p>da du getline und cin 'mischt', musst du dich wahrscheinlich um den eingabebuffer kümmern.<br />
<a href="http://tutorial.schornboeck.net/hello_world.htm" rel="nofollow">http://tutorial.schornboeck.net/hello_world.htm</a><br />
(kasten, oder forensuche betätigen)<br />
sonst stehen alte zeichen im buffer, die statt händischer eingabe genutzt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1374133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1374133</guid><dc:creator><![CDATA[elise]]></dc:creator><pubDate>Fri, 28 Sep 2007 04:54:46 GMT</pubDate></item><item><title><![CDATA[Reply to Schleife bricht nicht ab&#x2F;startet immer wieder neu?? on Fri, 28 Sep 2007 16:06:31 GMT]]></title><description><![CDATA[<p>Muha ... denke mal es soll nen Vokabeltrainer werden oder sowas? Hab mal was aus den Klassen die ich hier die letzten Wochen über gepostet habe zusammen gebastelt ... sollte gehen <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>
<pre><code class="language-cpp">#if !defined (MENU_H__INCLUDED)
#define MENU_H__INCLUDED

#if (_MSC_VER &gt;= 1300)
#pragma once
#endif // (_MSC_VER &gt;= 1300)

#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;limits&gt;

class menu
{
public:
	menu() : m_out(std::wcout) {}

public:
    void push_back(std::wstring const&amp; item) { m_data.push_back(item); }
    std::size_t get_selection() const { return m_sel; }

    friend std::wostream&amp; operator &lt;&lt;(std::wostream&amp; out, const menu&amp; menu)
    {
        for (std::size_t i = 0; i &lt; menu.m_data.size(); ++i) out &lt;&lt; L&quot;(&quot; &lt;&lt; i + 1 &lt;&lt; L&quot;) &quot; &lt;&lt; menu.m_data[i] &lt;&lt; std::endl;
		//menu.m_out = out;
        return out;
    }
    friend std::wistream&amp; operator &gt;&gt;(std::wistream&amp; in, menu&amp; menu)
    {
        do {
            menu.m_out &lt;&lt; L&quot;Auswahl: &quot; &lt;&lt; std::flush;
            in.sync(); in.clear(); in.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(), '\n');
        } while (!(in &gt;&gt; menu.m_sel) || menu.m_sel == 0 || menu.m_sel &gt; menu.m_data.size());
        --menu.m_sel;
		return in;
    }
private:
    std::vector&lt;std::wstring&gt; m_data;
    std::size_t m_sel;
	std::wostream&amp;	m_out;
};

#endif // MENU_H__INCLUDED
</code></pre>
<pre><code class="language-cpp">#if !defined(VOCABULARY_SYSTEM_H__INCLUDED)
#define VOCABULARY_SYSTEM_H__INCLUDED

#if (_MSC_VER &gt;= 1300)
#pragma once
#endif // (_MSC_VER &gt;= 1300)

#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;utility&gt;
#include &lt;iostream&gt;
#include &lt;ctime&gt;
#include &lt;cstdlib&gt;
#include &lt;iomanip&gt;

template &lt;const char* lang&gt;
class vocabulary_system
{
public:
	vocabulary_system(std::string const&amp; lang, std::string const&amp; sol)
	{ read(lang, sol); std::srand(static_cast&lt;unsigned&gt;(std::time(NULL)));}

public:
	void read(std::string const&amp; file_lang, std::string const&amp; file_sol)
	{
		std::wifstream file_stream(file_lang.c_str());
		if (!file_stream) throw std::invalid_argument(&quot;file not found&quot;);
		std::wstring tmp;
		while (std::getline(file_stream, tmp)) m_data.push_back(std::make_pair(tmp, L&quot;&quot;));
		file_stream.close();
		file_stream.clear();
		file_stream.open(file_sol.c_str());
		if (!file_stream) throw std::invalid_argument(&quot;file not found&quot;);
		for (std::size_t n = 0; std::getline(file_stream, tmp) &amp;&amp; n &lt; m_data.size(); ++n) m_data.at(n).second = tmp;
	}

public:
	friend std::wostream&amp; operator &lt;&lt;(std::wostream&amp; out, const vocabulary_system&amp; sys)
    {
		sys.m_cur = std::rand() % (sys.m_data.size() - 1);
		out &lt;&lt; sys.m_cur + 1 &lt;&lt; L&quot;:\n\t-&quot; &lt;&lt; lang &lt;&lt; &quot;: &quot; &lt;&lt; sys.m_data[sys.m_cur].first &lt;&lt; &quot;\n\t: &quot; &lt;&lt; std::flush;
		return out;
    }

	friend std::wistream&amp; operator &gt;&gt;(std::wistream&amp; in, vocabulary_system&amp; menu)
    {
		std::wstring tmp;
		std::getline(in, tmp);
		if (tmp != m_data[m_cur].second) in.setstate(std::ios_base::failbit)
		return in;
    }

private:
	std::vector&lt; std::pair&lt;std::wstring, std::wstring&gt; &gt; m_data;
	std::size_t		m_cur;
};

#endif // VOCABULARY_SYSTEM_H__INCLUDED
</code></pre>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;limits&gt;
#include &quot;vocabulary_system.h&quot;
#include &quot;menu.h&quot;

std::wistream&amp; clstream(std::wistream&amp; in);
{
	 in.sync(); in.clear(); in.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(), '\n');
	 return in;
}

int main ()
{
	std::wcout &lt;&lt; L&quot;Vokabel Lernanwendung V0.0.0.1&quot; &lt;&lt; std::endl;
	vocabulary_system system(&quot;vok_en_001.dat&quot;, &quot;vok_de_001.dat&quot;);
	menu inst;
	inst.push_back(L&quot;Vokabel abfragen&quot;);
	inst.push_back(L&quot;Beenden&quot;);
	bool close = false;
	while (close == false)
	{
		std::wcout &lt;&lt; menu;
		std::wcin &gt;&gt; menu;
		switch (inst.get_selection())
		{
		case 0:
			{
				std::wcout &lt;&lt; system;
				std::wcin &gt;&gt; clstream &gt;&gt; system;
				std::wcout &lt;&lt; (!std::wcin ? L&quot;Falsch!&quot; : L&quot;Richtig!&quot;);
			} break;
		case 1:
			{
				close = true;
			} break;
		};
	}
}
</code></pre>
<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1374490</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1374490</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Fri, 28 Sep 2007 16:06:31 GMT</pubDate></item></channel></rss>