<?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 bei ausgelesenen Koordinaten]]></title><description><![CDATA[<p>Servus an die große weite C/C++ Welt!<br />
bin ein Neuling und habe folgendes Problem:<br />
ich lese aus einer Textdatei Wertepaare (Koordinaten) aus, dabei befinden sich in einer Zeile 6 Koordinatenwerte - die sind durch ein LEERZEICHEN getrennt. Da es sich um Straßenkoordinaten handelt gibt es davon einige (immer in einer neuen Zeile)<br />
Nun zu meinem eigentlichen Problem:<br />
- ich lese eine Zeile mit</p>
<pre><code class="language-cpp">char array[256]
ifstream file(&quot;text.dat&quot;);
if(file.isopen()==true){
file.getline(array, sizeof(array));
</code></pre>
<p>aus -&gt; soweit so gut</p>
<p>Nun muss ich jedoch die einzelnen Chars in Float Werte zusammenbauen?!<br />
Mit anderen Worten -&gt; ich stehe vor dem wahrscheinlich völlig banalem Problem die einzelnen Chars zu einem Float zu konkatenieren (bis zum LEERZEICHEN) und dann diese Einzelwerte in ein float array[6] zu schreiben.</p>
<p>Da ich den Text oben ziemlich verwirrend finde ein Beispiel:<br />
text.dat</p>
<pre><code>0.00000 0.00000 290.00000 0.00000 0.00000 0.00000
23.23400 12.00000 -12.00000 2.00000 12.00000 0.00000
144.54300 -13.13240 20.00000 -4.234560 -123.00000 4.124670
</code></pre>
<p>[/code]<br />
in meinem file.getline(array,sizeof(array)) steht für die erste Zeile vermutlich folgendes:</p>
<pre><code>0,.,0,0,0,0,0, ,0,.,0,0,0,0,0, ,2,9,0,.,0,0,0,0,0, ,0,.,0,0,0,0,0, ,0,.,0,0,0,0,0, ,0,.,0,0,0,0,0
</code></pre>
<p>brauchen tue ich einen array in dem das Folgende steht:</p>
<pre><code>array[6]={0.00000,0.00000,290.00000,0.00000,0.00000,0.00000}
</code></pre>
<p>meine erste Idee war eine Funktion die ich rekursiv aufrufe zu schreiben, in der ich die Werte durch '+' konkateniere -&gt; das schlug fehl -&gt; auch das Problem mit dem LEERZEICHEN ist noch nicht gelöst -&gt; ich versuche mit</p>
<pre><code class="language-cpp">x-wert = function(array);
float function(char array[256]){
if(isspace(array[i]){
return x;
}
else{
x=array[i]+funktion(array[i++])
}
}
</code></pre>
<p>für einen hilfreichen Ansatz, Codebeispiel, etc wäre ich sehr dankbar</p>
<p>der Hightower</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/180501/problem-bei-ausgelesenen-koordinaten</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 20:33:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180501.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 May 2007 14:27:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem bei ausgelesenen Koordinaten on Thu, 03 May 2007 14:27:19 GMT]]></title><description><![CDATA[<p>Servus an die große weite C/C++ Welt!<br />
bin ein Neuling und habe folgendes Problem:<br />
ich lese aus einer Textdatei Wertepaare (Koordinaten) aus, dabei befinden sich in einer Zeile 6 Koordinatenwerte - die sind durch ein LEERZEICHEN getrennt. Da es sich um Straßenkoordinaten handelt gibt es davon einige (immer in einer neuen Zeile)<br />
Nun zu meinem eigentlichen Problem:<br />
- ich lese eine Zeile mit</p>
<pre><code class="language-cpp">char array[256]
ifstream file(&quot;text.dat&quot;);
if(file.isopen()==true){
file.getline(array, sizeof(array));
</code></pre>
<p>aus -&gt; soweit so gut</p>
<p>Nun muss ich jedoch die einzelnen Chars in Float Werte zusammenbauen?!<br />
Mit anderen Worten -&gt; ich stehe vor dem wahrscheinlich völlig banalem Problem die einzelnen Chars zu einem Float zu konkatenieren (bis zum LEERZEICHEN) und dann diese Einzelwerte in ein float array[6] zu schreiben.</p>
<p>Da ich den Text oben ziemlich verwirrend finde ein Beispiel:<br />
text.dat</p>
<pre><code>0.00000 0.00000 290.00000 0.00000 0.00000 0.00000
23.23400 12.00000 -12.00000 2.00000 12.00000 0.00000
144.54300 -13.13240 20.00000 -4.234560 -123.00000 4.124670
</code></pre>
<p>[/code]<br />
in meinem file.getline(array,sizeof(array)) steht für die erste Zeile vermutlich folgendes:</p>
<pre><code>0,.,0,0,0,0,0, ,0,.,0,0,0,0,0, ,2,9,0,.,0,0,0,0,0, ,0,.,0,0,0,0,0, ,0,.,0,0,0,0,0, ,0,.,0,0,0,0,0
</code></pre>
<p>brauchen tue ich einen array in dem das Folgende steht:</p>
<pre><code>array[6]={0.00000,0.00000,290.00000,0.00000,0.00000,0.00000}
</code></pre>
<p>meine erste Idee war eine Funktion die ich rekursiv aufrufe zu schreiben, in der ich die Werte durch '+' konkateniere -&gt; das schlug fehl -&gt; auch das Problem mit dem LEERZEICHEN ist noch nicht gelöst -&gt; ich versuche mit</p>
<pre><code class="language-cpp">x-wert = function(array);
float function(char array[256]){
if(isspace(array[i]){
return x;
}
else{
x=array[i]+funktion(array[i++])
}
}
</code></pre>
<p>für einen hilfreichen Ansatz, Codebeispiel, etc wäre ich sehr dankbar</p>
<p>der Hightower</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278150</guid><dc:creator><![CDATA[Hightower82]]></dc:creator><pubDate>Thu, 03 May 2007 14:27:19 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei ausgelesenen Koordinaten on Thu, 03 May 2007 14:49:05 GMT]]></title><description><![CDATA[<p>Schau mal in die FAQ unter &quot;Einmal String nach Zahl und zurück&quot; - sowohl der Ansatz mit Stringstreams als auch die strtod()-Funktion kannst du in einer (passenden) Schleife anwenden, wenn du willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278171</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 03 May 2007 14:49:05 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei ausgelesenen Koordinaten on Thu, 03 May 2007 15:01:07 GMT]]></title><description><![CDATA[<p>und zum ermitteln der einzelnen Zahlen kannst du dir strtok *wegduck* <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="😉"
    /> anschauen. Wenn du das ganze sowieso in C++ machst dann helfen find, find_first usw. weiter</p>
<pre><code class="language-cpp">//...
char *value;
value = strtok(zeile, &quot; &quot;);
if(value != NULL)
   while(value != NULL)
   {
       //verarbeiten von value z.B. mit strtod
       value = strtok(NULL, &quot; &quot;);
   }
// ...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1278175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278175</guid><dc:creator><![CDATA[zeigerzeiger]]></dc:creator><pubDate>Thu, 03 May 2007 15:01:07 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei ausgelesenen Koordinaten on Thu, 03 May 2007 15:11:46 GMT]]></title><description><![CDATA[<p>zeigerzeiger schrieb:</p>
<blockquote>
<p>und zum ermitteln der einzelnen Zahlen kannst du dir strtok *wegduck* <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="😉"
    /> anschauen.</p>
</blockquote>
<p>Wozu? strtod() liefert dir das erste unpassende Zeichen, dort kannst du im nächsten Schleifendurchlauf weiterarbeiten. Und ein Stringstream gibt seine Daten sowieso sequentiell aus <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1278184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278184</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 03 May 2007 15:11:46 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei ausgelesenen Koordinaten on Thu, 03 May 2007 15:17:30 GMT]]></title><description><![CDATA[<p>Stimmt, so kann man den &quot;error&quot; wert von strtod gut nutzen... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> Daran hab ich nicht gedacht.</p>
<p>Gruß<br />
zeigerzeiger</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278189</guid><dc:creator><![CDATA[zeigerzeiger]]></dc:creator><pubDate>Thu, 03 May 2007 15:17:30 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei ausgelesenen Koordinaten on Thu, 03 May 2007 21:56:38 GMT]]></title><description><![CDATA[<p>Hightower82 schrieb:</p>
<blockquote>
<p>für einen hilfreichen Ansatz, Codebeispiel, etc wäre ich sehr dankbar</p>
</blockquote>
<p>Mache Dir zunächst eine Koordinaten-Struktur oder Klasse ..</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;iterator&gt; // istream_iterator
#include &lt;vector&gt;

struct Koordinate
{
    double m_x, m_y;
};
// dann eine Funktion, die so eine Koordinate einliest
std::istream&amp; operator&gt;&gt;( std::istream&amp; in, Koordinate&amp; k )
{
    return in &gt;&gt; k.m_x &gt;&gt; k.m_y;
}

int main()
{
    using namespace std;
    // die Datei öffnen ...
    ifstream in(&quot;text.dat&quot;);
    // .. und z.B. einen STL-Container damit füllen
    vector&lt; Koordinate &gt; koords( (istream_iterator&lt; Koordinate &gt;( in )), istream_iterator&lt; Koordinate &gt;() );
    return 0;
}
</code></pre>
<p>das ist alles. Deine Koordinaten sind in der Variablen 'koords'.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278448</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Thu, 03 May 2007 21:56:38 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei ausgelesenen Koordinaten on Thu, 03 May 2007 22:51:07 GMT]]></title><description><![CDATA[<p>Dank euch erstmal für eure Hilfe und werd mich gleich mal ransetzen...</p>
<p>DANKE</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1278466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1278466</guid><dc:creator><![CDATA[Hightower82]]></dc:creator><pubDate>Thu, 03 May 2007 22:51:07 GMT</pubDate></item></channel></rss>