<?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 &amp;quot;reverse&amp;quot;]]></title><description><![CDATA[<p>Hallo!<br />
Ich hab ein char-Array der Größe 4 und ich möchte gerne die Reihenfolge der Elemente umdrehen. Es sollte in etwa so aussehen:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;algorithm&gt;
using namespace std;

int main()
{char arr[4]={1,2,3,4};
 reverse(arr,arr+3);
 cout&lt;&lt;arr&lt;&lt;endl;

 char stopp;
 cin&gt;&gt;stopp;

 return 0;
}
</code></pre>
<p>ich hätte dann gerne als output<br />
4321</p>
<p>und bekomme aber lauter komische symbole (herzerl, gesichter,.. ???!!)</p>
<p>Hat jemand eine Idee, was ich hier tun kann?</p>
<p>lg,<br />
Iso</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/211289/problem-mit-quot-reverse-quot</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 00:08:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/211289.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Apr 2008 12:04:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit &amp;quot;reverse&amp;quot; on Mon, 21 Apr 2008 12:04:39 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Ich hab ein char-Array der Größe 4 und ich möchte gerne die Reihenfolge der Elemente umdrehen. Es sollte in etwa so aussehen:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;algorithm&gt;
using namespace std;

int main()
{char arr[4]={1,2,3,4};
 reverse(arr,arr+3);
 cout&lt;&lt;arr&lt;&lt;endl;

 char stopp;
 cin&gt;&gt;stopp;

 return 0;
}
</code></pre>
<p>ich hätte dann gerne als output<br />
4321</p>
<p>und bekomme aber lauter komische symbole (herzerl, gesichter,.. ???!!)</p>
<p>Hat jemand eine Idee, was ich hier tun kann?</p>
<p>lg,<br />
Iso</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495591</guid><dc:creator><![CDATA[Isomorphismus]]></dc:creator><pubDate>Mon, 21 Apr 2008 12:04:39 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;reverse&amp;quot; on Mon, 21 Apr 2008 12:13:25 GMT]]></title><description><![CDATA[<p>Die Ausgabe ist einfach zu erklären: Der ASCII-Code 1 entspricht einem Herzchen, Der ASCII-Code 2 einem Gesicht usw. Du möchtest die Zahlen ausgeben. Dazu musst Du die Zahlen in int umwandeln oder gleich int verwenden.</p>
<pre><code class="language-cpp">int arr[4]={1,2,3,4};
reverse(arr,arr+4); // Arraygrenze exklusiv!
cout &lt;&lt; arr[0] &lt;&lt; arr[1] &lt;&lt; arr[2] &lt;&lt; arr[3]; // Übung: Schleife ;)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1495595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495595</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 21 Apr 2008 12:13:25 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;reverse&amp;quot; on Mon, 21 Apr 2008 12:27:06 GMT]]></title><description><![CDATA[<p>danke, jetzt kann ich es umdrehen, aber es werden trotzdem an meine 4 Zeichen noch 2 komische Zeichen angehängt (ein hochgestelltes L und einen &quot;Rauf-runter&quot;-Pfeil). Wie bekomme ich das weg?</p>
<p>lg,<br />
Iso</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495606</guid><dc:creator><![CDATA[Isomorphismus]]></dc:creator><pubDate>Mon, 21 Apr 2008 12:27:06 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;reverse&amp;quot; on Mon, 21 Apr 2008 12:29:59 GMT]]></title><description><![CDATA[<p>bei meinem char array bekomme ich das, und das ist das, das ich im endeffekt benötige</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495609</guid><dc:creator><![CDATA[Isomorphismus]]></dc:creator><pubDate>Mon, 21 Apr 2008 12:29:59 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;reverse&amp;quot; on Mon, 21 Apr 2008 12:31:41 GMT]]></title><description><![CDATA[<p>versuchs mal mit casten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495612</guid><dc:creator><![CDATA[markusrw]]></dc:creator><pubDate>Mon, 21 Apr 2008 12:31:41 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;reverse&amp;quot; on Mon, 21 Apr 2008 12:35:14 GMT]]></title><description><![CDATA[<p>Isomorphismus schrieb:</p>
<blockquote>
<p>bei meinem char array bekomme ich das, und das ist das, das ich im endeffekt benötige</p>
</blockquote>
<p>WAS benötigst Du im Endeffekt ?<br />
Dass intern mit Zeichen gearbeitet wird ?<br />
und wofür ?<br />
Was ist genau Dein Problem mit Jaxoms Lösung ?</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495615</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 21 Apr 2008 12:35:14 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;reverse&amp;quot; on Mon, 21 Apr 2008 12:37:04 GMT]]></title><description><![CDATA[<p>wie casten?<br />
ich poste jetzt das, was ich eigentlich brauche:</p>
<p>ich habe ein float array xNeData, in dem Werte drinnen stehen, und die möchte ich binär in ein File schreiben, wobei ich aber das byteordering umdrehen soll (wegen big und little endian). der code sieht so aus:</p>
<pre><code>for(i;i&lt;99;i++)

	{
	 char *buffer= reinterpret_cast&lt;char*&gt;(&amp;xNeData[i]); 
	 reverse(buffer,buffer+4); //hier liegt das Problem
	 vtkWriter.write(buffer,4);
	}
</code></pre>
<p>und die leseroutine, mit der ich andere files dieser art auslese, sieht folgendermaßen aus:</p>
<pre><code>while(!tReader.eof()) //!tReader.eof()
			{tReader.read(data, sz); 
			for(size_t i = 0; i != sz; ++i) dataReversed[sz-i-1] = data[i];

			DataType *p_wert = reinterpret_cast&lt;DataType*&gt;(dataReversed);

			tData[i]=*p_wert;
			i++;
			} //tData gespeichert zur Weiterverarbeitung
</code></pre>
<p>Das problem ist jetzt, dass ich, wenn ich die werte auslese, einfach nicht die richtigen werte in meinem file stehen habe (die ausleseroutine ist aber an anderen files dieser art getestet und funktioniert). also muss ich irgendetwas beim schreiben falsch machen..</p>
<p>lg,<br />
Iso</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495617</guid><dc:creator><![CDATA[Isomorphismus]]></dc:creator><pubDate>Mon, 21 Apr 2008 12:37:04 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;reverse&amp;quot; on Mon, 21 Apr 2008 14:17:03 GMT]]></title><description><![CDATA[<p>Isomorphismus schrieb:</p>
<blockquote>
<p>...die möchte ich binär in ein File schreiben...</p>
</blockquote>
<p>Wozu soll das gut sein ? Das Format ist hochgradig maschinenabhängig (wie Du z.B. bereits am endian-Problem festgestellt hast, aber hinter dieser Tür stecken noch mehr und häßlichere Monster) ....<br />
Ich könnte mir höchstens vorstellen, dass Du eine von außen vorgegebene Schnittstelle bedienen musst - aber da würde ich nicht mit der Binärdarstellung Deiner Plattform rumspielen, sondern die Schnittstelle klar definieren und umsetzen (welcher Wert soll im ersten Byte stehen, welcher im zweiten, ....).</p>
<p>Sorry, wen das jetzt ein wenig ruppig klingt, aber ich bin immer wieder überrascht, wie oft Leute unbedingt &quot;im Binärformat (des gerade aktuellen Compilers) schreiben&quot; wollen (bzw. zu müssen meinen) ... in 95% der Fälle erweist sich das diese Entscheidung als vorschnell und schmerzhaft.</p>
<p>Was spricht wirklich gegen einfaches</p>
<pre><code class="language-cpp">ofstream out(&quot;MyFile.txt&quot;);
float f = 1.23;
out &lt;&lt; f;
</code></pre>
<p>??</p>
<p>Das kannst Du überall (wo derselbe Zeichensatz verstanden wird) ebenso simpel und sicher wieder einlesen mit</p>
<pre><code class="language-cpp">ifstream in(&quot;MyFile.txt&quot;);
float f;
in &gt;&gt; f;
</code></pre>
<p>ganz unabhängig vom Maschinenformat, Compiler(-einstellungen), ...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495693</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 21 Apr 2008 14:17:03 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;reverse&amp;quot; on Mon, 21 Apr 2008 14:55:18 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Isomorphismus schrieb:</p>
<blockquote>
<p>...die möchte ich binär in ein File schreiben...</p>
</blockquote>
<p>Wozu soll das gut sein ? Das Format ist hochgradig maschinenabhängig (wie Du z.B. bereits am endian-Problem festgestellt hast, aber hinter dieser Tür stecken noch mehr und häßlichere Monster) ....<br />
Ich könnte mir höchstens vorstellen, dass Du eine von außen vorgegebene Schnittstelle bedienen musst - aber da würde ich nicht mit der Binärdarstellung Deiner Plattform rumspielen, sondern die Schnittstelle klar definieren und umsetzen (welcher Wert soll im ersten Byte stehen, welcher im zweiten, ....).</p>
<p>Sorry, wen das jetzt ein wenig ruppig klingt, aber ich bin immer wieder überrascht, wie oft Leute unbedingt &quot;im Binärformat (des gerade aktuellen Compilers) schreiben&quot; wollen (bzw. zu müssen meinen) ... in 95% der Fälle erweist sich das diese Entscheidung als vorschnell und schmerzhaft.</p>
<p>Was spricht wirklich gegen einfaches</p>
<pre><code class="language-cpp">ofstream out(&quot;MyFile.txt&quot;);
float f = 1.23;
out &lt;&lt; f;
</code></pre>
<p>??</p>
<p>Das kannst Du überall (wo derselbe Zeichensatz verstanden wird) ebenso simpel und sicher wieder einlesen mit</p>
<pre><code class="language-cpp">ifstream in(&quot;MyFile.txt&quot;);
float f;
in &gt;&gt; f;
</code></pre>
<p>ganz unabhängig vom Maschinenformat, Compiler(-einstellungen), ...</p>
<p>Gruß,</p>
<p>Simon2.</p>
</blockquote>
<p>Naja, es gibt auch durchaus Fälle, wo man das braucht.<br />
Als recht einfaches Beispiel kann man hier. z.B. wav- oder bmp-Dateien nennen, da werden die Samples Little-Endian abgelegt. Oder auch aif, das ist Big-Endian, (glaube ich). Nur wenn man ein funktionales Interface für den Zugriff auf solche Formate anbietet, muss man das halt berücksichtigen...</p>
<p>PS: Nichts desto trotz stimme ich Dir zu: Man sollte es lassen, wenns nicht nötig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495712</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 21 Apr 2008 14:55:18 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;reverse&amp;quot; on Mon, 21 Apr 2008 15:00:45 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>...<br />
Naja, es gibt auch durchaus Fälle, wo man das braucht.<br />
Als recht einfaches Beispiel kann man hier. z.B. wav- oder bmp-Dateien nennen, da werden die Samples Little-Endian abgelegt. Oder auch aif, das ist Big-Endian, (glaube ich)....</p>
</blockquote>
<p>Genau das meinte ich mit:</p>
<p>Simon2 schrieb:</p>
<blockquote>
<p>...<br />
Ich könnte mir höchstens vorstellen, dass Du eine von außen vorgegebene Schnittstelle bedienen musst - aber da würde ich nicht mit der Binärdarstellung Deiner Plattform rumspielen, sondern die Schnittstelle klar definieren und umsetzen (welcher Wert soll im ersten Byte stehen, welcher im zweiten, ....)....</p>
</blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>...<br />
PS: Nichts desto trotz stimme ich Dir zu: Man sollte es lassen, wenns nicht nötig ist.</p>
</blockquote>
<p>Genau ! Und ich würde noch erweitern zu: Es ist nur sehr selten wirklich nötig (und zwar deutlich seltener als Einsteiger das glauben ... bis hin zu: Wenn ein Einsteiger das glaubt, stimmt's nicht) <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>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495714</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 21 Apr 2008 15:00:45 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;reverse&amp;quot; on Mon, 21 Apr 2008 15:03:27 GMT]]></title><description><![CDATA[<p>Bei eigenen Interfaces eigentlich nur dann, wenn man sehr schnell sehr große Mengen an numerischen Daten durch die Mangel drehen muss und die String-&gt;Wert Konvertierung zu viel Zeit schluckt.<br />
Oder vielleicht noch, wenn große Mengen an Daten gespeichert werden müssen, und ein binäres Format debei deutliche Ersparnisse bedeutet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495717</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495717</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 21 Apr 2008 15:03:27 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;reverse&amp;quot; on Mon, 21 Apr 2008 15:07:28 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>...sehr schnell sehr große Mengen ...</p>
</blockquote>
<p>... und das machen Anfänger so gut wie nie (glauben es aber überdurchschnittlich oft ... &quot;Ey ! Das sind 500 Zeilen !! Und Performance ist sauwichtig, Mann !!&quot;) <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>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495723</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 21 Apr 2008 15:07:28 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;reverse&amp;quot; on Tue, 22 Apr 2008 06:01:52 GMT]]></title><description><![CDATA[<p>tja, liebe leute, das soll ein .vtk File werden,welches mit spezieller software visualiert werden soll, und diese software braucht die binärdarstellung. ich hätte auch lieber die konkreten werte ins file geschrieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495998</guid><dc:creator><![CDATA[Isomorphismus]]></dc:creator><pubDate>Tue, 22 Apr 2008 06:01:52 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;reverse&amp;quot; on Tue, 22 Apr 2008 06:43:52 GMT]]></title><description><![CDATA[<p>Isomorphismus schrieb:</p>
<blockquote>
<p>tja, liebe leute, das soll ein .vtk File werden,welches mit spezieller software visualiert werden soll, und diese software braucht die binärdarstellung. ich hätte auch lieber die konkreten werte ins file geschrieben.</p>
</blockquote>
<p>Tja Leut,<br />
also: extern vorgegebene Schnittstelle (was übrigens einfacher gewesen wäre, wenn Du's gleich geschrieben hättest).<br />
Aaaaber: Das bedeutet noch lange nicht, dass sie die Binärformate bestimmter Datentypen Deines konkreten Compilers benutzen würde. ... und ich würde auch nicht versuchen, dass zu verquicken, sondern eine klare Abbildung schaffen von den internen Datenformaten MEINES Programms auf das &quot;vtk-Datenformat&quot;.<br />
Bisweilen kann das einfach sein (wie die Abbildung eines chars auf ein vtkZeichen, wenn derselbe Zeichensatz und dieselbe interne Darstellung genommen werden), kann aber auch bedeuten, dass komplizierte Strukturen transformieren musst (wenn z.B. ein C++-Objekt in ein xml-Objekt überführt werden muß).</p>
<p>Für Quickreader: Beware of reinterpret_cast !!!</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496014</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 22 Apr 2008 06:43:52 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;reverse&amp;quot; on Tue, 22 Apr 2008 09:25:47 GMT]]></title><description><![CDATA[<p>??<br />
Also ich hab gar nichts verstanden, simon, was soll ich machen? (bzw worüber soll ich mich schlau machen?)</p>
<p>lg,<br />
Iso</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496076</guid><dc:creator><![CDATA[Isomorphismus]]></dc:creator><pubDate>Tue, 22 Apr 2008 09:25:47 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit &amp;quot;reverse&amp;quot; on Tue, 22 Apr 2008 14:14:37 GMT]]></title><description><![CDATA[<p>Isomorphismus schrieb:</p>
<blockquote>
<p>??<br />
Also ich hab gar nichts verstanden, simon, was soll ich machen? (bzw worüber soll ich mich schlau machen?)</p>
<p>lg,<br />
Iso</p>
</blockquote>
<p>Naja, ich meine halt sowas:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
#include &lt;cmath&gt;
#include &lt;iterator&gt;
#include &lt;algorithm&gt;
using namespace std;

struct MyData {
   MyData(float af, string const&amp; as, char ac) : f(af), s(as), c(ac) {}
   float f;
   string s;
   char c;
};

string int4digits2BCD(int t) {
   char buf[2];
   t %= 10000;
   buf[0] = (0x10*(t/1000)%10) + (t/100)%10;
   buf[1] = (0x10*(t/10)%10) + t%10;
   return string(buf, 2);
}

void toVTKFormat(MyData const&amp; m, vector&lt;char&gt;&amp; v) {
   float absolut = fabs(m.f);
   // 1 Byte: Vorzeichen von f; positiv =&gt; '$' ; negativ =&gt; '%'
   v.push_back(m.f == absolut ? '$' : '%' );

   // 4 Bytes: f als &lt;abcd&gt;.&lt;efgh&gt; bcd-codiert Bigendian
   int vorkomma = absolut;
   string vorkommaBCD(int4digits2BCD(vorkomma));
   copy(vorkommaBCD.begin(), vorkommaBCD.end(), back_inserter(v));

   int nachkomma = (absolut * 10000) - (vorkomma * 10000);
   string nachkommaBCD(int4digits2BCD(nachkomma));
   copy(nachkommaBCD.begin(), nachkommaBCD.end(), back_inserter(v));

   // 1 Byte Filler
   v.push_back('f');

   // n Byte: s
   copy(m.s.begin(), m.s.end(), back_inserter(v));

   // 1 Byte: c
   v.push_back(m.c);
}

int main() {
   cout &lt;&lt; &quot;hello world\n&quot;;
   MyData m(-1.23f, &quot;Simon2&quot;, 'x');
   vector&lt;char&gt; VTKData;

   toVTKFormat(m, VTKData);

   copy(VTKData.begin(), VTKData.end(), ostream_iterator&lt;char&gt;(cout, &quot; &quot;));

   return 0;
}
</code></pre>
<p>Da fehlen natürlich noch eine Menge Plausiprüfungen und letztlich würde ich das auch über einen operator&lt;&lt;(ostream&amp;, ...) machen, aber der Ansatz wird hoffentlich klar:<br />
toVTKFormat() übernimmt die Formatwandlung auf Byteebene.<br />
Es konvertiert ein MyData-Objekt (mit dem ich gut und bequem in meinem Code arbeiten kann) in ein vordefiniertes Format.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496217</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 22 Apr 2008 14:14:37 GMT</pubDate></item></channel></rss>