<?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[Problem mit XOR und Schreiben in Datei]]></title><description><![CDATA[<p>Hallo.</p>
<p>Ich habe ein Problem beim Dateischreiben von Strings, die mit dem XOR Operator &quot;verschlüsselt&quot; wurden.</p>
<p>Ich habe einen Schlüssel, der ein Buchstabe ist. Dabei tritt immer bei einem bestimmten Buchstaben als Schlüssel ein Fehler auf.<br />
Wenn ich als Schlüssel z.B. 'z' nehme, dann gibt es Probleme mit dem 's' in den Wörtern, wenn ich als Schlüssel 'a' nehme, tritt das Problem bei 'l' auf.</p>
<p>Und zwar sieht das dann so aus, dass ich dann z.B. bei 'z' als Schlüssel 'Hase' eingebe und 'Haz' rausbekomme. Also ersetzt er immer einen bestimmten Buchstaben und bricht danach ab.</p>
<p>Hier ein kleines Testprogramm von mir, wo der Fehler immer auftritt:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;

int main()
{
	std::fstream file;
	std::string input;
	std::string output;
	std::string readString;
	std::string writeString;
	char key = 'a';

	input.clear();
	output.clear();
	readString.clear();
	writeString.clear();

	std::cout &lt;&lt; &quot;Eingabe: &quot;;
	std:: cin &gt;&gt; input;

	for(unsigned int i=0;i&lt;=input.length();i++)
	{
		writeString += input[i] ^ key;
	};

	file.open(&quot;XOR.dat&quot;, std::fstream::out);
	if(file){ file.clear(); };
	file &lt;&lt; writeString;
	file.close();

	file.open(&quot;XOR.dat&quot;, std::fstream::in);
	file &gt;&gt; readString;
	file.close();

	for(unsigned int i=0;i&lt;=readString.length();i++)
	{
		output += readString[i] ^ key;
	};

	std::cout &lt;&lt; output;

	return 0;
};
</code></pre>
<p>Weiß jemand, warum der Fehler auftritt und was ich da tun kann?<br />
Wenn ich das nur mit Strings teste, also ohne diese in eine Datei zu schreiben und wieder auszulesen, dann tritt der Fehler nicht auf. Es scheint also daran zu liegen, dass die Strings in die Datei geschrieben und dann wieder ausgelesen werden.</p>
<p>MfG<br />
Hundefutter</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/221570/problem-mit-xor-und-schreiben-in-datei</link><generator>RSS for Node</generator><lastBuildDate>Mon, 05 Oct 2026 19:36:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/221570.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 31 Aug 2008 17:51:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit XOR und Schreiben in Datei on Sun, 31 Aug 2008 17:51:58 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>Ich habe ein Problem beim Dateischreiben von Strings, die mit dem XOR Operator &quot;verschlüsselt&quot; wurden.</p>
<p>Ich habe einen Schlüssel, der ein Buchstabe ist. Dabei tritt immer bei einem bestimmten Buchstaben als Schlüssel ein Fehler auf.<br />
Wenn ich als Schlüssel z.B. 'z' nehme, dann gibt es Probleme mit dem 's' in den Wörtern, wenn ich als Schlüssel 'a' nehme, tritt das Problem bei 'l' auf.</p>
<p>Und zwar sieht das dann so aus, dass ich dann z.B. bei 'z' als Schlüssel 'Hase' eingebe und 'Haz' rausbekomme. Also ersetzt er immer einen bestimmten Buchstaben und bricht danach ab.</p>
<p>Hier ein kleines Testprogramm von mir, wo der Fehler immer auftritt:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;

int main()
{
	std::fstream file;
	std::string input;
	std::string output;
	std::string readString;
	std::string writeString;
	char key = 'a';

	input.clear();
	output.clear();
	readString.clear();
	writeString.clear();

	std::cout &lt;&lt; &quot;Eingabe: &quot;;
	std:: cin &gt;&gt; input;

	for(unsigned int i=0;i&lt;=input.length();i++)
	{
		writeString += input[i] ^ key;
	};

	file.open(&quot;XOR.dat&quot;, std::fstream::out);
	if(file){ file.clear(); };
	file &lt;&lt; writeString;
	file.close();

	file.open(&quot;XOR.dat&quot;, std::fstream::in);
	file &gt;&gt; readString;
	file.close();

	for(unsigned int i=0;i&lt;=readString.length();i++)
	{
		output += readString[i] ^ key;
	};

	std::cout &lt;&lt; output;

	return 0;
};
</code></pre>
<p>Weiß jemand, warum der Fehler auftritt und was ich da tun kann?<br />
Wenn ich das nur mit Strings teste, also ohne diese in eine Datei zu schreiben und wieder auszulesen, dann tritt der Fehler nicht auf. Es scheint also daran zu liegen, dass die Strings in die Datei geschrieben und dann wieder ausgelesen werden.</p>
<p>MfG<br />
Hundefutter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1574339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574339</guid><dc:creator><![CDATA[Hundefutter]]></dc:creator><pubDate>Sun, 31 Aug 2008 17:51:58 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit XOR und Schreiben in Datei on Sun, 31 Aug 2008 17:53:37 GMT]]></title><description><![CDATA[<p>leigt wahrscheinlich am \0 was das ende des strings ist. -&gt; std::vector&lt;char&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1574340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574340</guid><dc:creator><![CDATA[ich w[rde sagen]]></dc:creator><pubDate>Sun, 31 Aug 2008 17:53:37 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit XOR und Schreiben in Datei on Sun, 31 Aug 2008 22:14:54 GMT]]></title><description><![CDATA[<p>ich w[rde sagen schrieb:</p>
<blockquote>
<p>leigt wahrscheinlich am \0 was das ende des strings ist.</p>
</blockquote>
<p>Was hat das denn damit zu tun?</p>
<p>Ich denke eher, es könnte damit zusammenhängen, dass nicht für jedes Zeichen nach der Verschlüsselung wieder ein eindeutiges Zeichen entsteht. Im String selber mag das vielleicht noch gehen, aber wenn man in eine Textdatei schreibt, ist es eben unterschiedlich, was herauskommt. Gerade bei bestimmten Escapesequenzen muss es nicht sein, dass das Gelesene 1:1 dem Geschriebenen entspricht.</p>
<p>Ich würde deshalb entweder einen Algorithmus entwickeln, der einen Buchstaben wiederum in einen Buchstaben verschlüsselt, oder es mit Ganzzahlen machen und somit auch Zahlen in die Textdatei schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1574398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574398</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 31 Aug 2008 22:14:54 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit XOR und Schreiben in Datei on Sun, 31 Aug 2008 22:38:35 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;sstream&gt;
#include &lt;stdio.h&gt;

int main()
{
    std::fstream file;
    std::stringbuf buf;
    std::string input;
    std::string output;
    std::string readString;
    std::string writeString;
    char key = 'z';

    input.clear();
    output.clear();
    readString.clear();
    writeString.clear();

    std::cout &lt;&lt; &quot;Eingabe: &quot;;
    std:: cin &gt;&gt; input;

    for(unsigned int i=0;i&lt;input.length();i++)
    {
        writeString += input[i] ^ key;
    };

    file.open(&quot;XOR.dat&quot;, std::fstream::out);
    if(file){ file.clear(); };
    file &lt;&lt; writeString;
    file.close();

    file.open(&quot;XOR.dat&quot;, std::fstream::in);
    file &gt;&gt; &amp;buf;
    file.close();
    readString=buf.str();

    for(unsigned int i=0;i&lt;readString.length();i++)
    {
        output += readString[i] ^ key;
    };

    std::cout &lt;&lt; output;

    return 0;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1574401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574401</guid><dc:creator><![CDATA[sothis_]]></dc:creator><pubDate>Sun, 31 Aug 2008 22:38:35 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit XOR und Schreiben in Datei on Mon, 01 Sep 2008 05:54:52 GMT]]></title><description><![CDATA[<p>Vielen Dank sothis_, das funktioniert perfekt :).<br />
Stringbuf kannte ich noch gar nicht..<br />
Ich muss noch viel lerne, was das ganze Dateimanagement und Strings angeht, aber da ist ja schon mal wieder etwas neues in mein Köpfchen eingedrungen.</p>
<p>MfG<br />
Hundefutter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1574441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574441</guid><dc:creator><![CDATA[Hundefutter]]></dc:creator><pubDate>Mon, 01 Sep 2008 05:54:52 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit XOR und Schreiben in Datei on Mon, 01 Sep 2008 18:21:18 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>ich w[rde sagen schrieb:</p>
<blockquote>
<p>leigt wahrscheinlich am \0 was das ende des strings ist.</p>
</blockquote>
<p>Was hat das denn damit zu tun?</p>
</blockquote>
<p>das</p>
<pre><code class="language-cpp">std::string res;
	res+=char('t'^'p');
	res+=char('e'^'a');
	res+=char('s'^'s');
	res+=char('t'^'s');
	std::cout &lt;&lt; res;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1574954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574954</guid><dc:creator><![CDATA[ich w[rde sagen]]></dc:creator><pubDate>Mon, 01 Sep 2008 18:21:18 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit XOR und Schreiben in Datei on Mon, 01 Sep 2008 18:42:37 GMT]]></title><description><![CDATA[<p>Bei deinem Code liegt aber so einiges im Argen.</p>
<p>Hier mal in schöner:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;sstream&gt;

int main()
{
    const char key = 'z';

    std::cout &lt;&lt; &quot;Eingabe: &quot;;

    std::string input;
    while( !std::getline( std::cin, input ) )
    {
        std::cout &lt;&lt; &quot;Ooops that was wrong. Try it again.\nEingabe: &quot; &lt;&lt; std::flush;
    }

    std::string writeString;
    for(unsigned int i=0;i&lt;input.length();i++)
    {
        writeString += input[i] ^ key;
    }

    std::fstream file(&quot;XOR.dat&quot;, std::fstream::out);
    if(!file)
    {
        std::cerr &lt;&lt; &quot;Could not open file&quot; &lt;&lt; std::endl;
        return 1;
    }

    file &lt;&lt; writeString;
    file.close();

    file.open(&quot;XOR.dat&quot;, std::fstream::in);
    if( !file )
    {
        std::cerr &lt;&lt; &quot;Could not open file&quot; &lt;&lt; std::endl;
        return 1;
    }

    std::stringbuf buf;
    file &gt;&gt; &amp;buf;

    std::string readString( buf.str() );
    std::string output;
    for(unsigned int i=0;i&lt;readString.length();i++)
    {
        output += readString[i] ^ key;
    }

    std::cout &lt;&lt; output;

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1574970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1574970</guid><dc:creator><![CDATA[Helferlein]]></dc:creator><pubDate>Mon, 01 Sep 2008 18:42:37 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit XOR und Schreiben in Datei on Tue, 02 Sep 2008 11:00:55 GMT]]></title><description><![CDATA[<p>Hallo nochmal.</p>
<p>Habe jetzt noch ein weiteres Problem.<br />
Lese jetzt mit stringbuf ein:</p>
<pre><code class="language-cpp">std::stringbuf buf;
file &gt;&gt; &amp;buf;
std::string input = buf.str();
</code></pre>
<p>Das funktioniert soweit auch ganz gut, nur habe ich das Problem, dass wenn ich mehrere Einträge in der Datei habe, er immer nur den ersten Eintrag liest..</p>
<p>Habes es nun mit</p>
<pre><code class="language-cpp">while(file &gt;&gt; &amp;buf)
{
//...
}
</code></pre>
<p>probiert, nur leider liest er so nur den ersten Eintrag in der Datei, auch wenn mehrere vorhanden sind..</p>
<p>Bei mehreren Einträgen hat es mit</p>
<pre><code class="language-cpp">while(file &gt;&gt; input)
{
//...
}
</code></pre>
<p>immer gut funktioniert, nur die Lösung mit dem Stringbuf hat da wohl ein Problem.<br />
Wie kann ich nun mit den Stringbuf arbeiten und auch mehrere Strings aus der Datei lesen?</p>
<p>MfG<br />
Hundefutter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1575249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1575249</guid><dc:creator><![CDATA[Hundefutter]]></dc:creator><pubDate>Tue, 02 Sep 2008 11:00:55 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit XOR und Schreiben in Datei on Thu, 04 Sep 2008 07:47:25 GMT]]></title><description><![CDATA[<p>Weiß denn keiner, wie ich mehr als immer nur den ersten Eintrag aus der Datei bekomme?<br />
Schreibe die Zeilen mit</p>
<pre><code class="language-cpp">HighscoreFile &lt;&lt; output &lt;&lt; std::endl;
</code></pre>
<p>in die Datei und will dann die einzelnen Zeilen wieder auslesen..</p>
<p>Wie gesagt, mit</p>
<pre><code class="language-cpp">while(file &gt;&gt; &amp;buf)
{
//...
};
</code></pre>
<p>geht es leider nicht, da nimmt er immer nur den ersten Eintrag.</p>
<p>MfG<br />
Hundefutter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576272</guid><dc:creator><![CDATA[Hundefutter]]></dc:creator><pubDate>Thu, 04 Sep 2008 07:47:25 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit XOR und Schreiben in Datei on Thu, 04 Sep 2008 12:19:29 GMT]]></title><description><![CDATA[<p>Schau mal <code>std::getline()</code> für <code>std::string</code> bzw. <code>std::fstream::getline()</code> für <code>char*</code> an...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576464</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 04 Sep 2008 12:19:29 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit XOR und Schreiben in Datei on Thu, 04 Sep 2008 19:46:19 GMT]]></title><description><![CDATA[<p>std::getline() funktioniert mit den Strings sehr gut. Vielen Dank!</p>
<p>MfG<br />
Hundefutter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576733</guid><dc:creator><![CDATA[Hundefutter]]></dc:creator><pubDate>Thu, 04 Sep 2008 19:46:19 GMT</pubDate></item></channel></rss>