<?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[Bitte meinen Code anschauen]]></title><description><![CDATA[<p>Hallo, würdet ihr so nett sein und auch mal diesen Code anschauen.</p>
<p>Es ist ein einfacher Parser. Damit soll es möglich sein Parameter und den Funktionsnamen auszulesen.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">// Beispielfunktion
string zeile = &quot;InitGraphic(640,480,32)&quot;;

// Funktionsnamen extrahieren
string fuktionsname = GetFunctionName(string zeile);

// Ersten Parameter
string param1 = GetParameter(zeile,1);

// Zweiten Parameter
string param2 = GetParameter(zeile,2);

// usw....
</code></pre>
<pre><code class="language-cpp">string
GetFunctionName(string line)
{
	size_t i1 = line.find(&quot;(&quot;);
	string s1 = line.substr( 0, i1-1); // n Zeichen ab dem i-ten Zeichen von s

    while( !s1.empty() &amp;&amp; isspace( *s1.begin() ) )
        s1.erase( s1.begin() );
    while( !s1.empty() &amp;&amp; isspace( *(s1.end()-1) ) )
        s1.erase( s1.end()-1 );

	return s1;
}

string
GetParameter(string line,int index)
{
	int acIndex=0;
	size_t breite=0;
	unsigned int i;

	string test;

	string s1 = line.substr(line.find(&quot;(&quot;)+1,line.find(&quot;)&quot;)-line.find(&quot;(&quot;)-1);

    while( !s1.empty() &amp;&amp; isspace( *s1.begin() ) )
        s1.erase( s1.begin() );
    while( !s1.empty() &amp;&amp; isspace( *(s1.end()-1) ) )
        s1.erase( s1.end()-1 );

	for(i=0; i&lt;s1.length(); i++)
	{
		if(s1.substr(i,1)==&quot;,&quot;)
			acIndex++;

		if(acIndex==index-1)
			break;
	}

	if(i==0)
	{
		breite = s1.find(&quot;,&quot;,i);
	}
	else
	{
		breite = s1.find(&quot;,&quot;,i+1)-i-1;
		i = i + 1;
	}

	return s1.substr(i,breite);
}
</code></pre>
<p>Der Code funktioniert zwar, aber was haltet ihr davon? Gibt es Fehlerquellen die ich übersehen haben könnte. Was könnte ich besser machen. Würdet ihr es anders machen. Danke für eure Mühe und Meinungen. <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/170316/bitte-meinen-code-anschauen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 02:45:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/170316.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 14 Jan 2007 13:23:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bitte meinen Code anschauen on Sun, 14 Jan 2007 13:23:34 GMT]]></title><description><![CDATA[<p>Hallo, würdet ihr so nett sein und auch mal diesen Code anschauen.</p>
<p>Es ist ein einfacher Parser. Damit soll es möglich sein Parameter und den Funktionsnamen auszulesen.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">// Beispielfunktion
string zeile = &quot;InitGraphic(640,480,32)&quot;;

// Funktionsnamen extrahieren
string fuktionsname = GetFunctionName(string zeile);

// Ersten Parameter
string param1 = GetParameter(zeile,1);

// Zweiten Parameter
string param2 = GetParameter(zeile,2);

// usw....
</code></pre>
<pre><code class="language-cpp">string
GetFunctionName(string line)
{
	size_t i1 = line.find(&quot;(&quot;);
	string s1 = line.substr( 0, i1-1); // n Zeichen ab dem i-ten Zeichen von s

    while( !s1.empty() &amp;&amp; isspace( *s1.begin() ) )
        s1.erase( s1.begin() );
    while( !s1.empty() &amp;&amp; isspace( *(s1.end()-1) ) )
        s1.erase( s1.end()-1 );

	return s1;
}

string
GetParameter(string line,int index)
{
	int acIndex=0;
	size_t breite=0;
	unsigned int i;

	string test;

	string s1 = line.substr(line.find(&quot;(&quot;)+1,line.find(&quot;)&quot;)-line.find(&quot;(&quot;)-1);

    while( !s1.empty() &amp;&amp; isspace( *s1.begin() ) )
        s1.erase( s1.begin() );
    while( !s1.empty() &amp;&amp; isspace( *(s1.end()-1) ) )
        s1.erase( s1.end()-1 );

	for(i=0; i&lt;s1.length(); i++)
	{
		if(s1.substr(i,1)==&quot;,&quot;)
			acIndex++;

		if(acIndex==index-1)
			break;
	}

	if(i==0)
	{
		breite = s1.find(&quot;,&quot;,i);
	}
	else
	{
		breite = s1.find(&quot;,&quot;,i+1)-i-1;
		i = i + 1;
	}

	return s1.substr(i,breite);
}
</code></pre>
<p>Der Code funktioniert zwar, aber was haltet ihr davon? Gibt es Fehlerquellen die ich übersehen haben könnte. Was könnte ich besser machen. Würdet ihr es anders machen. Danke für eure Mühe und Meinungen. <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/1209657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1209657</guid><dc:creator><![CDATA[franz m aus h]]></dc:creator><pubDate>Sun, 14 Jan 2007 13:23:34 GMT</pubDate></item><item><title><![CDATA[Reply to Bitte meinen Code anschauen on Mon, 15 Jan 2007 05:50:01 GMT]]></title><description><![CDATA[<ul>
<li>Benutz eine Funktion, um den doppelten Code loszuwerden (isspace/erase).</li>
<li>Deine Funktionen fallen bei einer ungültigen Eingabe auf die Nase, z.B. wenn gar keine Klammer drin ist.</li>
<li>Warum suchst du die Kommas nicht auch mit find, sondern mit diesem seltsamen Ein-Zeichen-substr-Konstrukt?</li>
<li>Bei verschachtelten Funktionsaufrufen, geklammerten Ausdrücken oder Casts an den Parametern funktioniert der Code nicht.</li>
<li>Bei einem expliziten Aufruf von operator() funktioniert der Code nicht.</li>
<li>i = i + 1? Kommst du von BASIC?</li>
</ul>
]]></description><link>https://www.c-plusplus.net/forum/post/1210004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1210004</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 15 Jan 2007 05:50:01 GMT</pubDate></item><item><title><![CDATA[Reply to Bitte meinen Code anschauen on Mon, 15 Jan 2007 19:48:41 GMT]]></title><description><![CDATA[<p>Ja würde ich es anders machen. Und zwar würde ich mit mal Boost.Spirit ansehen, oder zumindest versuchen irgendwie in Richtung Recursive-Descent-Parser zu gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1210449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1210449</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 15 Jan 2007 19:48:41 GMT</pubDate></item></channel></rss>