<?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[istream, ostream - Output in Datei schreiben oder ostream in Struktur lenken?]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich versuche gerade ein Clustering-Algorithmus in meinem Programm zu integrieren und das will grad nicht so recht .. Ich glaube wenn man so was schonmal gemacht hat sollte es eigentlich trivial sein - aber alleine schaff ich das irgendwie nicht <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="🙄"
    /></p>
<p>Es geht um den Algo k-Means, mit dem Werte um sogenannte Zentren clustert. So hat man eine ausgeweogene Gruppierung und einen gewissen Abstand zwischen den Clustern. Dafür habe ich eine fertige Implementierung der University of Maryland, die auch eine Anpassung an dem jeweiligen Problem zulässt:</p>
<pre><code class="language-cpp">//----------------------------------------------------------------------
//  Global parameters (some are set in getArgs())
//----------------------------------------------------------------------

int	k		= 10;		// number of centers
int	dim		= 2;		// dimension
int	maxPts		= 1000;		// max number of data points
int	stages		= 100;		// number of stages
istream* dataIn		= NULL;		// input data stream
</code></pre>
<p>Für das Clustering an sich steht noch folgende read- und write-Methoden bereit:</p>
<pre><code class="language-cpp">//----------------------------------------------------------------------
//  Reading/Printing utilities
//	readPt - read a point from input stream into data storage
//		at position i.  Returns false on error or EOF.
//	printPt - prints a points to output file
//----------------------------------------------------------------------
bool readPt(istream&amp; in, KMpoint&amp; p)
{
    for (int d = 0; d &lt; dim; d++) {
	if(!(in &gt;&gt; p[d])) return false;
    }
    return true;
}

void printPt(ostream&amp; out, const KMpoint&amp; p)
{
    out &lt;&lt; &quot;(&quot; &lt;&lt; p[0];
    for (int i = 1; i &lt; dim; i++) {
	out &lt;&lt; &quot;, &quot; &lt;&lt; p[i];
    }
    out &lt;&lt; &quot;)\n&quot;;
}
</code></pre>
<p>die im Code folgenderweise aufgerufen werden:</p>
<pre><code class="language-cpp">if (dataIn != NULL) {			// read points from file
	while (nPts &lt; maxPts &amp;&amp; readPt(*dataIn, dataPts[nPts])) nPts++;
    }

// Clustering ..

cout &lt;&lt; &quot;Data Points:\n&quot;;			// echo data points
    for (int i = 0; i &lt; nPts; i++)
	printPt(myOStream, dataPts[i]);
</code></pre>
<p>Nun, ich habe versucht den in- und out-Stream auf Dateien zu lenken:</p>
<pre><code class="language-cpp">ostream* myOStream = new ofstream(&quot;KCT.txt&quot;, ios::out);

    cout &lt;&lt; &quot;Data Points:\n&quot;;			// echo data points
    for (int i = 0; i &lt; nPts; i++)
       printPt(myOStream&amp;, dataPts[i]);
</code></pre>
<p>aber das funktioniert natürlich nicht. Noch lieber würde ich die Werte von einem ublas-Vektor als Input verwenden und diese dann in einem anderen Vektor speichern statt mit Dateien zu arbeiten, aber das schien noch komplizierter als den Umweg über die Dateien. Hat jemand einen Hint wie ich vorgehen kann?</p>
<p>Viele Grüße,<br />
C.</p>
<p>Achso, beim Kompilieren des Codes wie der hier ist, bekomm ich den Fehler</p>
<blockquote>
<p>error C2784: 'std::basic_ostream&lt;_Elem,_Traits&gt; &amp;std::operator &lt;&lt;(std::basic_ostream&lt;_Elem,_Traits&gt; &amp;,const std::_Smanip&lt;_Arg&gt; &amp;)' : could not deduce template argument for 'std::basic_ostream&lt;_Elem,_Traits&gt; &amp;' from 'std::ofstream *'</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/topic/282280/istream-ostream-output-in-datei-schreiben-oder-ostream-in-struktur-lenken</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 07:17:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/282280.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 17 Feb 2011 10:43:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to istream, ostream - Output in Datei schreiben oder ostream in Struktur lenken? on Thu, 17 Feb 2011 10:43:33 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich versuche gerade ein Clustering-Algorithmus in meinem Programm zu integrieren und das will grad nicht so recht .. Ich glaube wenn man so was schonmal gemacht hat sollte es eigentlich trivial sein - aber alleine schaff ich das irgendwie nicht <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="🙄"
    /></p>
<p>Es geht um den Algo k-Means, mit dem Werte um sogenannte Zentren clustert. So hat man eine ausgeweogene Gruppierung und einen gewissen Abstand zwischen den Clustern. Dafür habe ich eine fertige Implementierung der University of Maryland, die auch eine Anpassung an dem jeweiligen Problem zulässt:</p>
<pre><code class="language-cpp">//----------------------------------------------------------------------
//  Global parameters (some are set in getArgs())
//----------------------------------------------------------------------

int	k		= 10;		// number of centers
int	dim		= 2;		// dimension
int	maxPts		= 1000;		// max number of data points
int	stages		= 100;		// number of stages
istream* dataIn		= NULL;		// input data stream
</code></pre>
<p>Für das Clustering an sich steht noch folgende read- und write-Methoden bereit:</p>
<pre><code class="language-cpp">//----------------------------------------------------------------------
//  Reading/Printing utilities
//	readPt - read a point from input stream into data storage
//		at position i.  Returns false on error or EOF.
//	printPt - prints a points to output file
//----------------------------------------------------------------------
bool readPt(istream&amp; in, KMpoint&amp; p)
{
    for (int d = 0; d &lt; dim; d++) {
	if(!(in &gt;&gt; p[d])) return false;
    }
    return true;
}

void printPt(ostream&amp; out, const KMpoint&amp; p)
{
    out &lt;&lt; &quot;(&quot; &lt;&lt; p[0];
    for (int i = 1; i &lt; dim; i++) {
	out &lt;&lt; &quot;, &quot; &lt;&lt; p[i];
    }
    out &lt;&lt; &quot;)\n&quot;;
}
</code></pre>
<p>die im Code folgenderweise aufgerufen werden:</p>
<pre><code class="language-cpp">if (dataIn != NULL) {			// read points from file
	while (nPts &lt; maxPts &amp;&amp; readPt(*dataIn, dataPts[nPts])) nPts++;
    }

// Clustering ..

cout &lt;&lt; &quot;Data Points:\n&quot;;			// echo data points
    for (int i = 0; i &lt; nPts; i++)
	printPt(myOStream, dataPts[i]);
</code></pre>
<p>Nun, ich habe versucht den in- und out-Stream auf Dateien zu lenken:</p>
<pre><code class="language-cpp">ostream* myOStream = new ofstream(&quot;KCT.txt&quot;, ios::out);

    cout &lt;&lt; &quot;Data Points:\n&quot;;			// echo data points
    for (int i = 0; i &lt; nPts; i++)
       printPt(myOStream&amp;, dataPts[i]);
</code></pre>
<p>aber das funktioniert natürlich nicht. Noch lieber würde ich die Werte von einem ublas-Vektor als Input verwenden und diese dann in einem anderen Vektor speichern statt mit Dateien zu arbeiten, aber das schien noch komplizierter als den Umweg über die Dateien. Hat jemand einen Hint wie ich vorgehen kann?</p>
<p>Viele Grüße,<br />
C.</p>
<p>Achso, beim Kompilieren des Codes wie der hier ist, bekomm ich den Fehler</p>
<blockquote>
<p>error C2784: 'std::basic_ostream&lt;_Elem,_Traits&gt; &amp;std::operator &lt;&lt;(std::basic_ostream&lt;_Elem,_Traits&gt; &amp;,const std::_Smanip&lt;_Arg&gt; &amp;)' : could not deduce template argument for 'std::basic_ostream&lt;_Elem,_Traits&gt; &amp;' from 'std::ofstream *'</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2022175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2022175</guid><dc:creator><![CDATA[Cordula]]></dc:creator><pubDate>Thu, 17 Feb 2011 10:43:33 GMT</pubDate></item><item><title><![CDATA[Reply to istream, ostream - Output in Datei schreiben oder ostream in Struktur lenken? on Thu, 17 Feb 2011 11:21:50 GMT]]></title><description><![CDATA[<p>Nur kurz überflogen: Schau dir mal die Signatur an</p>
<pre><code class="language-cpp">void printPt(ostream&amp; out, const KMpoint&amp; p)
</code></pre>
<p>und schau dir mal deinen Aufruf an</p>
<pre><code class="language-cpp">printPt(myOStream&amp;, dataPts[i]);
</code></pre>
<p>wobei myOStream ein Pointer auf einen ofstream ist.</p>
<p>Davon mal abgesehen, dürfte deine Anweisung wegen Syntax-Fehler schon nicht compilieren <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>HTH</p>
<p>Tante Edit sagt:</p>
<pre><code class="language-cpp">printPt(*myOStream, dataPts[i]);
</code></pre>
<p>sollte reichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2022196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2022196</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Thu, 17 Feb 2011 11:21:50 GMT</pubDate></item><item><title><![CDATA[Reply to istream, ostream - Output in Datei schreiben oder ostream in Struktur lenken? on Thu, 17 Feb 2011 11:25:32 GMT]]></title><description><![CDATA[<p>überlade doch die entsprechenden Operatoren dann kann man diese auch einfach verwenden:</p>
<pre><code class="language-cpp">ostream&amp; operator &lt;&lt; (ostream &amp;ostr, const KMpoint&amp; p)
{
	ostr &lt;&lt; &quot;(&quot; &lt;&lt; p[0]; 
	for (int i = 1; i &lt; dim; i++) 
		ostr &lt;&lt; &quot;, &quot; &lt;&lt; p[i]; 
	ostr &lt;&lt; &quot;)\n&quot;; 
	return ostr;
}
</code></pre>
<pre><code class="language-cpp">KMpoint kmpnt; //mit irgendeinem Wert

cout &lt;&lt; kmpnt;
//oder aber
ostream datei(.....);
datei &lt;&lt; kmpnt;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2022197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2022197</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Thu, 17 Feb 2011 11:25:32 GMT</pubDate></item><item><title><![CDATA[Reply to istream, ostream - Output in Datei schreiben oder ostream in Struktur lenken? on Thu, 17 Feb 2011 15:27:32 GMT]]></title><description><![CDATA[<p>Vielen lieben Dank, hab alles umgeschrieben und es funktioniert fehlerfrei <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2022331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2022331</guid><dc:creator><![CDATA[Cordula]]></dc:creator><pubDate>Thu, 17 Feb 2011 15:27:32 GMT</pubDate></item></channel></rss>