<?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[Funktion um bestimmtes Format einzulesen]]></title><description><![CDATA[<p>Hallo<br />
Ich habe probierte eine Funktion zu schreiben, die ein bestimmtes Format aus einer Datei einliest.<br />
Das Format:</p>
<pre><code>1
house-haus
1
tree-baum
2
car-auto
</code></pre>
<p>Die Funktion:</p>
<pre><code>void read(std::fstream&amp; f)
{
	std::string s;
	std::string m;
	int unit;

		getline(f,s);

		if(!isalpha(static_cast&lt;unsigned char&gt;(s[0])))
		{
			std::stringstream kon(s);
			kon &gt;&gt; unit;
                         ...
			getline(f,s);
		}

		if(isalpha(static_cast&lt;unsigned char&gt;(s[0])))
			{
			m = s.substr(0,s.find_first_of(&quot;-&quot;));
                          ...

			s = s.substr(s.find_first_of(&quot;-&quot;)+1);
                          ...
			}
}
</code></pre>
<p>Hier noch der Aufruf der Funktion:</p>
<pre><code>std::fstream file;

	file.open(&quot;Datei.txt&quot;, std::ios::in);

	while(file.good())
	{
		read(file);
		...
	}

	file.close();
</code></pre>
<p>Die Funktion funktioniert so weit aber die erste Zahl die in der Datei steht wird nicht richtig eingelesen (also welche im bsp. oben über der Vokabel &quot;house&quot; steht).<br />
Findet jmd den Fehler?<br />
Danke <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/topic/324274/funktion-um-bestimmtes-format-einzulesen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Jul 2026 14:54:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/324274.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 10 Mar 2014 13:45:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion um bestimmtes Format einzulesen on Mon, 10 Mar 2014 13:45:23 GMT]]></title><description><![CDATA[<p>Hallo<br />
Ich habe probierte eine Funktion zu schreiben, die ein bestimmtes Format aus einer Datei einliest.<br />
Das Format:</p>
<pre><code>1
house-haus
1
tree-baum
2
car-auto
</code></pre>
<p>Die Funktion:</p>
<pre><code>void read(std::fstream&amp; f)
{
	std::string s;
	std::string m;
	int unit;

		getline(f,s);

		if(!isalpha(static_cast&lt;unsigned char&gt;(s[0])))
		{
			std::stringstream kon(s);
			kon &gt;&gt; unit;
                         ...
			getline(f,s);
		}

		if(isalpha(static_cast&lt;unsigned char&gt;(s[0])))
			{
			m = s.substr(0,s.find_first_of(&quot;-&quot;));
                          ...

			s = s.substr(s.find_first_of(&quot;-&quot;)+1);
                          ...
			}
}
</code></pre>
<p>Hier noch der Aufruf der Funktion:</p>
<pre><code>std::fstream file;

	file.open(&quot;Datei.txt&quot;, std::ios::in);

	while(file.good())
	{
		read(file);
		...
	}

	file.close();
</code></pre>
<p>Die Funktion funktioniert so weit aber die erste Zahl die in der Datei steht wird nicht richtig eingelesen (also welche im bsp. oben über der Vokabel &quot;house&quot; steht).<br />
Findet jmd den Fehler?<br />
Danke <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/2388039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2388039</guid><dc:creator><![CDATA[lolipoplol]]></dc:creator><pubDate>Mon, 10 Mar 2014 13:45:23 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion um bestimmtes Format einzulesen on Mon, 10 Mar 2014 14:04:15 GMT]]></title><description><![CDATA[<p>Wenn zwischen den Texten immer genau ein '-' steht, dann geht das z.B. so:</p>
<pre><code>void read( std::istream&amp; f ) // std::(I)stream
{
    int unit;
    std::string m,s;
    while( std::getline( std::getline( f &gt;&gt; unit &gt;&gt; std::ws, m, '-' ), s ) )
    {
        std::cout &lt;&lt; unit &lt;&lt; &quot;) &quot; &lt;&lt; m &lt;&lt; &quot;-&quot; &lt;&lt; s &lt;&lt; std::endl;
        // ...
    }
    if( f.eof() ) // bis Ende gelesen
    {
        std::cout &lt;&lt; &quot;alle gut&quot; &lt;&lt; std::endl;
    }
}

// im main
    std::ifstream file(&quot;Datei.txt&quot;); // (I)fstream
    if( !file.is_open() )
    {
        cerr &lt;&lt; &quot;problem..&quot; &lt;&lt; endl;
        return -2; // break;
    }
    read( file );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2388042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2388042</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Mon, 10 Mar 2014 14:04:15 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion um bestimmtes Format einzulesen on Mon, 10 Mar 2014 14:06:31 GMT]]></title><description><![CDATA[<p>lolipoplols Code funktioniert bei mir.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2388044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2388044</guid><dc:creator><![CDATA[Singender Holzkübel]]></dc:creator><pubDate>Mon, 10 Mar 2014 14:06:31 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion um bestimmtes Format einzulesen on Mon, 10 Mar 2014 14:07:04 GMT]]></title><description><![CDATA[<p>lolipoplol schrieb:</p>
<blockquote>
<p>Die Funktion funktioniert so weit aber die erste Zahl die in der Datei steht wird nicht richtig eingelesen (also welche im bsp. oben über der Vokabel &quot;house&quot; steht).<br />
Findet jmd den Fehler?</p>
</blockquote>
<p>vielleicht steht in der Datei vor der '1' eine Leerzeile. Was steht genau in dem ersten String 's' - gib das doch einfach mal aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2388045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2388045</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Mon, 10 Mar 2014 14:07:04 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion um bestimmtes Format einzulesen on Mon, 10 Mar 2014 14:48:43 GMT]]></title><description><![CDATA[<p>Von solchen Schleifen bekomme ich Zahnschmerzen</p>
<pre><code>while( std::getline( std::getline( f &gt;&gt; unit &gt;&gt; std::ws, m, '-' ), s ) )
</code></pre>
<p>Warum nicht einfach barmherzig sein?</p>
<pre><code>for(;;)
{
	f &gt;&gt; unit &gt;&gt; std::ws;
	std::getline(f, m, '-');
	if( !std::getline(f, s) )
		break;

	// ....
}
</code></pre>
<p>Oder anders, aber wenigstens die Funktionsaufrufe auf eigene Zeilen und Statements auslagern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2388056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2388056</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 10 Mar 2014 14:48:43 GMT</pubDate></item></channel></rss>