<?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[cin.get leißt nur x Bytes ein]]></title><description><![CDATA[<p>Hallo,</p>
<p>mit cin.get lese ich Binärdaten ein. Die \n's müssen mitgelesen werden.<br />
Also habe ich mir gedacht, nutze ich cin.get mit nur einem char, um jedes Zeichen einlesen zu können...</p>
<p>Bei kleinen Datenmengen &lt; 1.075 Bytes funktioniert es wunderbar. Ab dem 1.075 Byte stoppt cin.get plötzlich mit dem Einlesevorgang. (Fehlerstatus EOF) *Ighffkftiftio rr*</p>
<p>Die Daten lese ich mittels &quot;Programm &lt; Datei.txt&quot; ein.</p>
<p>Hier ein bisschen Code dazu.</p>
<pre><code class="language-cpp">bEncrypt=false;
	bool bTmpBuffer=false;
	char readBuffer=0;
	BYTE Buffer[16]={0};
	int i=0;
	char cBufferLen=48; //&quot;0&quot;
cin.binary; //???
	while(cin.get(readBuffer)){
//if(readBuffer==13||readBuffer==10) readBuffer=58; //Encrypt debug: Für eine augenfreundliche Welt
		Buffer[i]=readBuffer;
		++i;
		if(i==16){
			if(bEncrypt){
				blockEncrypt(&amp;encipher,&amp;keyin,Buffer,128,outbuf);
				for(i=0;i&lt;16;++i) cout &lt;&lt; outbuf[i];
			}else{
				if(!bTmpBuffer){
					bTmpBuffer=true;
				}else{
					for(i=0;i&lt;16;++i) cout &lt;&lt; outbuf[i];
				}
				blockDecrypt(&amp;decipher,&amp;keyin,Buffer,128,outbuf);
			}
			i=0;
		}
	}
	if(i!=0){
		if(bEncrypt){
			itoa16(16-i,cBufferLen); //&lt;&lt;Eigene 0-9-A-F Funktion /MS Zeugs: _itoa_s(16-i,cBufferLen,16);
			for(;i&lt;16;++i) Buffer[i]=64; //64=@ 59=; 0=\0
			blockEncrypt(&amp;encipher,&amp;keyin,Buffer,128,outbuf);
			for(i=0;i&lt;16;++i) cout &lt;&lt; outbuf[i];
		}else{
			if(i!=1) return -3;
			for(i=0;i&lt;16-a16toi(Buffer[0]);++i) cout &lt;&lt; outbuf[i];
		}
	}
	if(bEncrypt) cout &lt;&lt; cBufferLen;
</code></pre>
<p>(<br />
^Auszug eines kleinen Verschlüsslungsprogramms.<br />
Es werden 16 Bytes benötigt um einen Block zu ver-/entschlüsseln.<br />
Beim Verschlüsseln schreibe ich die letzte ursprüngliche Blockgröße als Hexwert in ein Zeichen.<br />
Beim Entschlüsseln wird das letzte Zeichen genommen, um den letzten Block nur teilweise auf die Ursprungsgröße auszugeben.<br />
Klappt alles, nur halt nicht mit größeren Dateien. Warum nur? <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="😕"
    /><br />
)</p>
<p>MfG,<br />
Programmierer auf scheinbaren und offensichtlichem Anfängerniveau</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/247912/cin-get-leißt-nur-x-bytes-ein</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 08:59:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/247912.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Aug 2009 12:43:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to cin.get leißt nur x Bytes ein on Mon, 17 Aug 2009 12:43:48 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>mit cin.get lese ich Binärdaten ein. Die \n's müssen mitgelesen werden.<br />
Also habe ich mir gedacht, nutze ich cin.get mit nur einem char, um jedes Zeichen einlesen zu können...</p>
<p>Bei kleinen Datenmengen &lt; 1.075 Bytes funktioniert es wunderbar. Ab dem 1.075 Byte stoppt cin.get plötzlich mit dem Einlesevorgang. (Fehlerstatus EOF) *Ighffkftiftio rr*</p>
<p>Die Daten lese ich mittels &quot;Programm &lt; Datei.txt&quot; ein.</p>
<p>Hier ein bisschen Code dazu.</p>
<pre><code class="language-cpp">bEncrypt=false;
	bool bTmpBuffer=false;
	char readBuffer=0;
	BYTE Buffer[16]={0};
	int i=0;
	char cBufferLen=48; //&quot;0&quot;
cin.binary; //???
	while(cin.get(readBuffer)){
//if(readBuffer==13||readBuffer==10) readBuffer=58; //Encrypt debug: Für eine augenfreundliche Welt
		Buffer[i]=readBuffer;
		++i;
		if(i==16){
			if(bEncrypt){
				blockEncrypt(&amp;encipher,&amp;keyin,Buffer,128,outbuf);
				for(i=0;i&lt;16;++i) cout &lt;&lt; outbuf[i];
			}else{
				if(!bTmpBuffer){
					bTmpBuffer=true;
				}else{
					for(i=0;i&lt;16;++i) cout &lt;&lt; outbuf[i];
				}
				blockDecrypt(&amp;decipher,&amp;keyin,Buffer,128,outbuf);
			}
			i=0;
		}
	}
	if(i!=0){
		if(bEncrypt){
			itoa16(16-i,cBufferLen); //&lt;&lt;Eigene 0-9-A-F Funktion /MS Zeugs: _itoa_s(16-i,cBufferLen,16);
			for(;i&lt;16;++i) Buffer[i]=64; //64=@ 59=; 0=\0
			blockEncrypt(&amp;encipher,&amp;keyin,Buffer,128,outbuf);
			for(i=0;i&lt;16;++i) cout &lt;&lt; outbuf[i];
		}else{
			if(i!=1) return -3;
			for(i=0;i&lt;16-a16toi(Buffer[0]);++i) cout &lt;&lt; outbuf[i];
		}
	}
	if(bEncrypt) cout &lt;&lt; cBufferLen;
</code></pre>
<p>(<br />
^Auszug eines kleinen Verschlüsslungsprogramms.<br />
Es werden 16 Bytes benötigt um einen Block zu ver-/entschlüsseln.<br />
Beim Verschlüsseln schreibe ich die letzte ursprüngliche Blockgröße als Hexwert in ein Zeichen.<br />
Beim Entschlüsseln wird das letzte Zeichen genommen, um den letzten Block nur teilweise auf die Ursprungsgröße auszugeben.<br />
Klappt alles, nur halt nicht mit größeren Dateien. Warum nur? <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="😕"
    /><br />
)</p>
<p>MfG,<br />
Programmierer auf scheinbaren und offensichtlichem Anfängerniveau</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762308</guid><dc:creator><![CDATA[StefanH]]></dc:creator><pubDate>Mon, 17 Aug 2009 12:43:48 GMT</pubDate></item><item><title><![CDATA[Reply to cin.get leißt nur x Bytes ein on Mon, 17 Aug 2009 16:03:26 GMT]]></title><description><![CDATA[<p>Hast du die Datei auch wirklich mit ios::binary geöffnet? Ist das 1075. Zeichen evtl. der ASCII-Code 26 (Strg+Z)?!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762450</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Mon, 17 Aug 2009 16:03:26 GMT</pubDate></item><item><title><![CDATA[Reply to cin.get leißt nur x Bytes ein on Mon, 17 Aug 2009 16:57:02 GMT]]></title><description><![CDATA[<p>Whoops <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> das war es wohl. STDIN wurde nicht im Binärmodus geöffnet, bzw. irgend jemand &lt;-- hat es wohl auskommentiert.</p>
<p>THX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1762473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1762473</guid><dc:creator><![CDATA[StefanH]]></dc:creator><pubDate>Mon, 17 Aug 2009 16:57:02 GMT</pubDate></item></channel></rss>