<?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[String mit boost (komplizierter) splitten]]></title><description><![CDATA[<p>Wäre schön wenn jemand einen Rat für mich hätte bezüglich des folgenden Problems: In einer Input-Datei soll eine Zeile mit x,y-Parametern (doubles) eingelesen werden, die bspw. wie folgt aussieht:</p>
<p>BetaST (0.0/120.) (0.5/140.) (0.9/155.5) (1.0/165.5) # kommentar: diese Zeile wird schon richtig eingelesen (ausser dem Kommentar)<br />
BetaST (0.0 120.) ( 0.5/ 140.) (0.9/155.5) (1.0/165.5) # kommentar: geht nicht wegen den blanks in den geklammerten Ausdruecken</p>
<p>&quot;BetaST&quot; ist der Parametername, in den Klammern folgen dann die x- und y-werte. Wundervoll wäre es auch, wenn man mit # noch Kommentare einfügen könnte. Bislang läuft das Ganze mit dem boost tokenizer, wobei in den Klammern keine Blanks/Tabs eingebracht werden können und auch keine Kommentare.</p>
<p>Man müsste die Zeile zuerst nach den Klammern zerlegen, den Kommentar abschneiden und vorallem auch Tokens mit blanks/tabs usw. entfernen. Da weiss ich mir nicht so recht zu helfen und hoffe auf Eure Hilfe und Erfahrung. Danke vielmals!</p>
<pre><code class="language-cpp">// for boost-tokenizer
	typedef boost::tokenizer&lt;boost::char_separator&lt;char&gt; &gt;tokenizer;

	// Specification of Separators
	boost::char_separator&lt;char&gt; sep(&quot;,= \t\n&quot;);

	// Separator for radialDistribution Parameters
	boost::char_separator&lt;char&gt; sepBracks(&quot; \t()|[]{}&quot;);
	boost::char_separator&lt;char&gt; sepXY(&quot;/|:&quot;);

	// Oeffne Parameter-File
	ifstream file(inputFileName.data());

	if (file.fail())
	{
		cerr &lt;&lt; &quot;ERROR: Unable to open file&quot; &lt;&lt; file &lt;&lt;&quot; for reading.&quot; &lt;&lt; endl;
		exit(1);
	}

	while( getline(file,line) )
	{
		//		cout &lt;&lt; &quot;Zeile =&quot; &lt;&lt; line &lt;&lt; endl;
		tokenizer tokens(line, sep);
		vector&lt;string&gt; tokenArray( tokens.begin(), tokens.end() ) ;
		if (tokenArray.size()&lt;1)
			continue;
		else if (  tokenArray[0] == &quot;betaST&quot; )
		{
			tokenizer tokens(line, sepBracks);
			vector&lt;string&gt; tokenArrayRadParams1( tokens.begin(), tokens.end() );
			cout &lt;&lt; &quot;\t- \&quot;betaST\&quot; by &quot; &lt;&lt; tokenArrayRadParams1.size()-1 &lt;&lt; &quot; values: &quot; &lt;&lt; endl;

			for (i=1; i&lt;(int)tokenArrayRadParams1.size(); i++)
			{
				tokenizer tokens2(tokenArrayRadParams1[i], sepXY);
				vector&lt;string&gt; tokenArrayRadParams2( tokens2.begin(), tokens2.end() );
				point.x = atof(tokenArrayRadParams2[0].data()); point.y = atof(tokenArrayRadParams2[1].data()); point.z = 0.0;
				radDist_betaST-&gt;AppendPoint(point);
			}
			cout &lt;&lt; &quot;\t\tradHeight \t= &quot;;
			for (i=0; i&lt;(int)tokenArrayRadParams1.size()-1; i++)
				cout &lt;&lt; radDist_betaST-&gt;m_P.At(i)-&gt;x &lt;&lt; &quot;\t&quot;;
			cout &lt;&lt; endl;
			cout &lt;&lt; &quot;\t\tparamValue \t= &quot;;
			for (i=0; i&lt;(int)tokenArrayRadParams1.size()-1; i++)
				cout  &lt;&lt; radDist_betaST-&gt;m_P.At(i)-&gt;y &lt;&lt; &quot;\t&quot;;
			cout &lt;&lt; endl;
			continue;
		}
        }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/265237/string-mit-boost-komplizierter-splitten</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 07:36:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/265237.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Apr 2010 20:16:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to String mit boost (komplizierter) splitten on Mon, 19 Apr 2010 20:16:57 GMT]]></title><description><![CDATA[<p>Wäre schön wenn jemand einen Rat für mich hätte bezüglich des folgenden Problems: In einer Input-Datei soll eine Zeile mit x,y-Parametern (doubles) eingelesen werden, die bspw. wie folgt aussieht:</p>
<p>BetaST (0.0/120.) (0.5/140.) (0.9/155.5) (1.0/165.5) # kommentar: diese Zeile wird schon richtig eingelesen (ausser dem Kommentar)<br />
BetaST (0.0 120.) ( 0.5/ 140.) (0.9/155.5) (1.0/165.5) # kommentar: geht nicht wegen den blanks in den geklammerten Ausdruecken</p>
<p>&quot;BetaST&quot; ist der Parametername, in den Klammern folgen dann die x- und y-werte. Wundervoll wäre es auch, wenn man mit # noch Kommentare einfügen könnte. Bislang läuft das Ganze mit dem boost tokenizer, wobei in den Klammern keine Blanks/Tabs eingebracht werden können und auch keine Kommentare.</p>
<p>Man müsste die Zeile zuerst nach den Klammern zerlegen, den Kommentar abschneiden und vorallem auch Tokens mit blanks/tabs usw. entfernen. Da weiss ich mir nicht so recht zu helfen und hoffe auf Eure Hilfe und Erfahrung. Danke vielmals!</p>
<pre><code class="language-cpp">// for boost-tokenizer
	typedef boost::tokenizer&lt;boost::char_separator&lt;char&gt; &gt;tokenizer;

	// Specification of Separators
	boost::char_separator&lt;char&gt; sep(&quot;,= \t\n&quot;);

	// Separator for radialDistribution Parameters
	boost::char_separator&lt;char&gt; sepBracks(&quot; \t()|[]{}&quot;);
	boost::char_separator&lt;char&gt; sepXY(&quot;/|:&quot;);

	// Oeffne Parameter-File
	ifstream file(inputFileName.data());

	if (file.fail())
	{
		cerr &lt;&lt; &quot;ERROR: Unable to open file&quot; &lt;&lt; file &lt;&lt;&quot; for reading.&quot; &lt;&lt; endl;
		exit(1);
	}

	while( getline(file,line) )
	{
		//		cout &lt;&lt; &quot;Zeile =&quot; &lt;&lt; line &lt;&lt; endl;
		tokenizer tokens(line, sep);
		vector&lt;string&gt; tokenArray( tokens.begin(), tokens.end() ) ;
		if (tokenArray.size()&lt;1)
			continue;
		else if (  tokenArray[0] == &quot;betaST&quot; )
		{
			tokenizer tokens(line, sepBracks);
			vector&lt;string&gt; tokenArrayRadParams1( tokens.begin(), tokens.end() );
			cout &lt;&lt; &quot;\t- \&quot;betaST\&quot; by &quot; &lt;&lt; tokenArrayRadParams1.size()-1 &lt;&lt; &quot; values: &quot; &lt;&lt; endl;

			for (i=1; i&lt;(int)tokenArrayRadParams1.size(); i++)
			{
				tokenizer tokens2(tokenArrayRadParams1[i], sepXY);
				vector&lt;string&gt; tokenArrayRadParams2( tokens2.begin(), tokens2.end() );
				point.x = atof(tokenArrayRadParams2[0].data()); point.y = atof(tokenArrayRadParams2[1].data()); point.z = 0.0;
				radDist_betaST-&gt;AppendPoint(point);
			}
			cout &lt;&lt; &quot;\t\tradHeight \t= &quot;;
			for (i=0; i&lt;(int)tokenArrayRadParams1.size()-1; i++)
				cout &lt;&lt; radDist_betaST-&gt;m_P.At(i)-&gt;x &lt;&lt; &quot;\t&quot;;
			cout &lt;&lt; endl;
			cout &lt;&lt; &quot;\t\tparamValue \t= &quot;;
			for (i=0; i&lt;(int)tokenArrayRadParams1.size()-1; i++)
				cout  &lt;&lt; radDist_betaST-&gt;m_P.At(i)-&gt;y &lt;&lt; &quot;\t&quot;;
			cout &lt;&lt; endl;
			continue;
		}
        }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1885416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1885416</guid><dc:creator><![CDATA[maschimaen1]]></dc:creator><pubDate>Mon, 19 Apr 2010 20:16:57 GMT</pubDate></item><item><title><![CDATA[Reply to String mit boost (komplizierter) splitten on Mon, 19 Apr 2010 20:25:29 GMT]]></title><description><![CDATA[<p>dafür ist boost::spirit eigentlich total Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1885417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1885417</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Mon, 19 Apr 2010 20:25:29 GMT</pubDate></item></channel></rss>