<?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[Boost:: Parsen und Datum]]></title><description><![CDATA[<p>Hallo mal wieder.<br />
Ich hätte da mal 2 Fragen:</p>
<p>1. Parsen mit Boost<br />
Ich bekomme in meinem Programm einen String geliefert den ich auf richtigkeit prüfe, das sieht so aus:</p>
<pre><code class="language-cpp">//So könnte ein String aussehen:
//login_name=TestName&amp;login_password=Testpwd&amp;login_senden=Senden
static const boost::regex e(&quot;login_name[=][a-zA-ZöäüÖÄÜ]{1,20}[&amp;]login_password[=][a-zA-ZöäüÖÄÜ]{1,20}[&amp;]login_senden=Senden&quot;);
reg_resultLogin = regex_match(s, e);

if(reg_resultLogin)//ok oder Fehler
</code></pre>
<p>Das funktioniert wunderbar.<br />
Aber aus diesem oben beschriebenen String sollte ich nun den Namen und das Passwort extrahieren.(std::string Name, std::string Passwort)<br />
Ich weiß das daß mit boost::regex_irgendwas geht.<br />
Nur wie und mit was?</p>
<p>Weiß das jemand?</p>
<p>Das<br />
2. Datum mit boost.</p>
<p>Ich ermittle das Datum so:</p>
<pre><code class="language-cpp">char buf[45];
memset(buf,0,45);

SYSTEMTIME systime;
GetLocalTime(&amp;systime);
sprintf(buf,&quot;%02d.%02d.%d &quot;,systime.wDay,systime.wMonth,systime.wYear);
</code></pre>
<p>Geht auch wunderbar.<br />
Nur interessiert mich wie das mit boost geht?<br />
Habe mal durch die Doku gewühlt, da steht so viel...<br />
Ich frage vor allem im Hinblick, da ich später eine Lösung haben sollte, bei der ich von einem Bestimmten Datum die Kalenderwoche haben sollte.<br />
Wie geht das (mit boost)?</p>
<p>Vielen Dank für die Hilfe, Mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/203581/boost-parsen-und-datum</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 03:58:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/203581.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Jan 2008 07:50:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Boost:: Parsen und Datum on Thu, 24 Jan 2008 07:50:56 GMT]]></title><description><![CDATA[<p>Hallo mal wieder.<br />
Ich hätte da mal 2 Fragen:</p>
<p>1. Parsen mit Boost<br />
Ich bekomme in meinem Programm einen String geliefert den ich auf richtigkeit prüfe, das sieht so aus:</p>
<pre><code class="language-cpp">//So könnte ein String aussehen:
//login_name=TestName&amp;login_password=Testpwd&amp;login_senden=Senden
static const boost::regex e(&quot;login_name[=][a-zA-ZöäüÖÄÜ]{1,20}[&amp;]login_password[=][a-zA-ZöäüÖÄÜ]{1,20}[&amp;]login_senden=Senden&quot;);
reg_resultLogin = regex_match(s, e);

if(reg_resultLogin)//ok oder Fehler
</code></pre>
<p>Das funktioniert wunderbar.<br />
Aber aus diesem oben beschriebenen String sollte ich nun den Namen und das Passwort extrahieren.(std::string Name, std::string Passwort)<br />
Ich weiß das daß mit boost::regex_irgendwas geht.<br />
Nur wie und mit was?</p>
<p>Weiß das jemand?</p>
<p>Das<br />
2. Datum mit boost.</p>
<p>Ich ermittle das Datum so:</p>
<pre><code class="language-cpp">char buf[45];
memset(buf,0,45);

SYSTEMTIME systime;
GetLocalTime(&amp;systime);
sprintf(buf,&quot;%02d.%02d.%d &quot;,systime.wDay,systime.wMonth,systime.wYear);
</code></pre>
<p>Geht auch wunderbar.<br />
Nur interessiert mich wie das mit boost geht?<br />
Habe mal durch die Doku gewühlt, da steht so viel...<br />
Ich frage vor allem im Hinblick, da ich später eine Lösung haben sollte, bei der ich von einem Bestimmten Datum die Kalenderwoche haben sollte.<br />
Wie geht das (mit boost)?</p>
<p>Vielen Dank für die Hilfe, Mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442510</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Thu, 24 Jan 2008 07:50:56 GMT</pubDate></item><item><title><![CDATA[Reply to Boost:: Parsen und Datum on Thu, 24 Jan 2008 08:09:24 GMT]]></title><description><![CDATA[<p>Für das Datum brauchst du kein Boost, das geht auch mit Ansi-Funktionen: time() liefert die aktuelle Systemzeit (inklusive Datum) und gmtime() bastelt dir daraus eine verwertbare struct.</p>
<p>(für die Kalenderwoche kannst du den Wert tm_yday auswerten, du mußt nur aufpassen, was als &quot;erste Woche&quot; gezählt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442519</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 24 Jan 2008 08:09:24 GMT</pubDate></item><item><title><![CDATA[Reply to Boost:: Parsen und Datum on Thu, 24 Jan 2008 08:36:23 GMT]]></title><description><![CDATA[<p>Ich glaube wegen der KW habe ich schonmal nen Thread geschrieben, das funktioniert nicht, warum weiß ich jetzt nimmer.<br />
Mal lesen.</p>
<p>Und die Regex Geschichte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442542</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Thu, 24 Jan 2008 08:36:23 GMT</pubDate></item><item><title><![CDATA[Reply to Boost:: Parsen und Datum on Thu, 24 Jan 2008 08:43:41 GMT]]></title><description><![CDATA[<p>Mondmann schrieb:</p>
<blockquote>
<p>Ich glaube wegen der KW habe ich schonmal nen Thread geschrieben, das funktioniert nicht, warum weiß ich jetzt nimmer.<br />
Mal lesen.</p>
</blockquote>
<p>Was meinst du mit &quot;funktioniert nicht&quot;?</p>
<blockquote>
<p>Und die Regex Geschichte?</p>
</blockquote>
<p>Da mußt du auf einen Kollegen warten, weil ich mich mit Boost::Regex nicht auskenne.</p>
<p>(btw, für die Zukunft solltest du besser für jedes Problem einen eigenen Thread eröffnen ;))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442548</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 24 Jan 2008 08:43:41 GMT</pubDate></item><item><title><![CDATA[Reply to Boost:: Parsen und Datum on Thu, 24 Jan 2008 10:43:43 GMT]]></title><description><![CDATA[<p>Die Substrings die du haben willst must du in der regex in Klammern setzen, in deinem Fall also so</p>
<pre><code class="language-cpp">//So könnte ein String aussehen:
//login_name=TestName&amp;login_password=Testpwd&amp;login_senden=Senden
static const boost::regex e(&quot;login_name[=]([a-zA-ZöäüÖÄÜ]{1,20})[&amp;]login_password[=]([a-zA-ZöäüÖÄÜ]{1,20})[&amp;]login_senden=Senden&quot;);
reg_resultLogin = regex_match(s, e);

if(reg_resultLogin)//ok oder Fehler
</code></pre>
<p>Wie du dann darauf zugreifst kannst du hier nachlesen<br />
<a href="http://www.boost.org/libs/regex/doc/captures.html" rel="nofollow">http://www.boost.org/libs/regex/doc/captures.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442628</guid><dc:creator><![CDATA[Tanren]]></dc:creator><pubDate>Thu, 24 Jan 2008 10:43:43 GMT</pubDate></item><item><title><![CDATA[Reply to Boost:: Parsen und Datum on Thu, 24 Jan 2008 12:01:33 GMT]]></title><description><![CDATA[<p>Wenn ich es also so mache, funktionierts ganz hervorragend:</p>
<pre><code class="language-cpp">static const boost::regex e(&quot;login_name[=]([a-zA-ZöäüÖÄÜ]{1,20})[&amp;]login_password[=]([0-9a-zA-ZöäüÖÄÜ]{1,20})[&amp;]login_senden=Senden		
		boost::match_results&lt;std::string::const_iterator&gt; loginErg;
		reg_resultLogin = boost::regex_match(s, loginErg, e, boost::match_default | boost::match_partial);

		std::string nam(loginErg[1]);
		std::string pwd(loginErg[2]);
</code></pre>
<p>Dann stehen in nam und pwd meine gewünschten Werte.<br />
Vielen Dank das war sehr hilfreich!</p>
<p>Die Frage ist nun, ob das schneller ist als wie vorher:</p>
<p>1.Prüfen ob der String korrekt ist.<br />
2. Mit s.find(&quot;login_name&quot;);<br />
...</p>
<p>pwd= s.substr(&quot;...&quot;);</p>
<p>Die zwei (später auch mehr) Werte auszulesen????<br />
Ist das mit Regex nun schneller?<br />
Bequemer und Platzsparender auf jeden Fall...<br />
Mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1442697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1442697</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Thu, 24 Jan 2008 12:01:33 GMT</pubDate></item><item><title><![CDATA[Reply to Boost:: Parsen und Datum on Fri, 25 Jan 2008 09:47:38 GMT]]></title><description><![CDATA[<p>So ,jetzt ahbe ich noch ein Problem mit einem Regulären Ausdruck.<br />
Er gibt 1 zurück, obwohl er nicht passen dürfte:</p>
<pre><code class="language-cpp">unsigned int reg_resultBuch = 0;
boost::match_results&lt;std::string::const_iterator&gt; buchErg;
static const boost::regex dialogbuch(&quot;^weiter[=].{1,20}[&amp;]buchart[=]([A-Z a-z]{2,5})[&amp;]eingabeDatum[=]([0-9.]{10})[&amp;]eingabeUhrzeit[=]([0-9:]{5})$&quot;);

std::string buchi = reinterpret_cast&lt;char* &gt;(pbuch-&gt;lpbData);

reg_resultBuch = boost::regex_match(buchi, buchErg, dialogbuch, boost::match_default | boost::match_partial);
</code></pre>
<p>Der String der da ankommt ist:</p>
<blockquote>
<p>weiter=T1dHRh5OHlc=&amp;buchart=KO</p>
</blockquote>
<p>Trotzdem gibt die regex Funktion 1 zurück...wieso?<br />
Was klar ist, der String passt zum Teil.<br />
Aber ich habe doch das ^...$, damit lege ich doch fest, daß er den ganzen String prüfen soll, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1443280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443280</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Fri, 25 Jan 2008 09:47:38 GMT</pubDate></item><item><title><![CDATA[Reply to Boost:: Parsen und Datum on Mon, 28 Jan 2008 07:50:03 GMT]]></title><description><![CDATA[<p>Keiner eine Idee?<br />
Habs nochmal geprüft, sollte eigentlich stimmen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444841</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Mon, 28 Jan 2008 07:50:03 GMT</pubDate></item><item><title><![CDATA[Reply to Boost:: Parsen und Datum on Mon, 28 Jan 2008 10:09:23 GMT]]></title><description><![CDATA[<p>1. Warum schreibst Du &quot;=&quot; und &quot;&amp;&quot; in eckigen Klammern?<br />
2. in Deinem &quot;eingabeDatum&quot; solltest Du den &quot;.&quot; escapen<br />
3. bei mir gibt die funktion nicht 1 zurück bei Deinem Teststring</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444896</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Mon, 28 Jan 2008 10:09:23 GMT</pubDate></item><item><title><![CDATA[Reply to Boost:: Parsen und Datum on Mon, 28 Jan 2008 10:46:36 GMT]]></title><description><![CDATA[<p>1. Weil das Zeichen genau an dieser Stelle sein soll.<br />
Man könnte es auch weglassen.</p>
<p>2. Warum? Der Punkt steht doch in einer eckigen Klammer, was bedeutet, daß Zahlen (0-9) und Punkte vorkommen dürfen.<br />
Oder sehe ich das falsch?</p>
<p>3. Bei mir leider doch...</p>
<p>Grüße Mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444934</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Mon, 28 Jan 2008 10:46:36 GMT</pubDate></item><item><title><![CDATA[Reply to Boost:: Parsen und Datum on Mon, 28 Jan 2008 10:49:10 GMT]]></title><description><![CDATA[<p>Mondmann schrieb:</p>
<blockquote>
<p>1. Weil das Zeichen genau an dieser Stelle sein soll.<br />
Man könnte es auch weglassen.</p>
</blockquote>
<p>Dann müsstest Du nicht schreiben &quot;Ein beliebiges Zeichen aus der Menge (&amp;)&quot;, sondern &quot;Null oder einmal das Zeichen '&amp;'&quot;, sprich &quot;&amp;?&quot; statt &quot;[&amp;]&quot;.</p>
<blockquote>
<p>2. Warum? Der Punkt steht doch in einer eckigen Klammer, was bedeutet, daß Zahlen (0-9) und Punkte vorkommen dürfen.</p>
</blockquote>
<p>Können allerdings auch zehn Punkte sein...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444938</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 28 Jan 2008 10:49:10 GMT</pubDate></item><item><title><![CDATA[Reply to Boost:: Parsen und Datum on Mon, 28 Jan 2008 10:51:26 GMT]]></title><description><![CDATA[<p>. steht eigentlich immer für ein beliebiges Zeichen. Schreib lieber mal \.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444942</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Mon, 28 Jan 2008 10:51:26 GMT</pubDate></item><item><title><![CDATA[Reply to Boost:: Parsen und Datum on Mon, 28 Jan 2008 10:52:54 GMT]]></title><description><![CDATA[<p>Ja des stimmt.<br />
Da ich aber[&amp;]schreibe ist es doch so korrekt(?).<br />
Wenns 10 Punkte sind , ist es auch egal...</p>
<p>Ich frage mich warum der String dein ch unten gepostet habe 1 ergibt.<br />
Das muss damit etwas zu tun haben, daß es ein Teilstring ist...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444945</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Mon, 28 Jan 2008 10:52:54 GMT</pubDate></item><item><title><![CDATA[Reply to Boost:: Parsen und Datum on Mon, 28 Jan 2008 10:54:56 GMT]]></title><description><![CDATA[<p>Stimmt, es können auch zehn beliebige Zeichen sein. Auch in einer Menge steht der Punkt für &quot;jedes beliebige Zeichen&quot;.</p>
<p>[&amp;] ist, nochmal, &quot;ein Zeichen aus der Menge&quot; - sprich entweder &amp;, oder &amp;, oder &amp;, oder... (verstehst Du worauf ich hinaus will - die Mengenklammer ist hier sinnlos). Weglassen darfst Du das &amp; allerdings nicht, weil &quot;nichts&quot; nicht der Regel &quot;ein Zeichen aus der Menge&quot; gehorcht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444948</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 28 Jan 2008 10:54:56 GMT</pubDate></item><item><title><![CDATA[Reply to Boost:: Parsen und Datum on Mon, 28 Jan 2008 11:10:51 GMT]]></title><description><![CDATA[<p>Mondmann schrieb:</p>
<blockquote>
<p>1. Weil das Zeichen genau an dieser Stelle sein soll.<br />
Man könnte es auch weglassen.</p>
<p>2. Warum? Der Punkt steht doch in einer eckigen Klammer, was bedeutet, daß Zahlen (0-9) und Punkte vorkommen dürfen.<br />
Oder sehe ich das falsch?</p>
</blockquote>
<p>Du solltest Dir die RE-Syntax nochmal durchlesen...</p>
<p>Mondmann schrieb:</p>
<blockquote>
<p>3. Bei mir leider doch...</p>
</blockquote>
<p>...und die Doku zu Boost::regex (bzgl. match_partial).<br />
Wahrscheinlich hast Du Dein gewünschtes Ergebnis, wenn Du es weglässt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444962</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Mon, 28 Jan 2008 11:10:51 GMT</pubDate></item><item><title><![CDATA[Reply to Boost:: Parsen und Datum on Mon, 28 Jan 2008 11:16:02 GMT]]></title><description><![CDATA[<p>Hm...bin mir nicht ganz sicher.<br />
Also sollte ich das &amp; escapen oder [&amp;]{1} schreiben und den Punkt in den eckigen Klammern ebenfalls escapen.</p>
<p>Das sähe denn so aus:</p>
<pre><code class="language-cpp">static const boost::regex dialogbuch(&quot;^weiter=.{1,20}[&amp;]{1}buchart=([A-Z a-z]{2,5})[&amp;]{1}eingabeDatum=([0-9\.]{10})[&amp;]{1}eingabeUhrzeit=([0-9:]{5})$&quot;);
</code></pre>
<p>Was aber leider keinerlei Besserung bringt.<br />
Das Ergebnis ist immer 1 beim String:</p>
<blockquote>
<p>weiter=T1dHRh5OHlc=&amp;buchart=KO</p>
</blockquote>
<p>Was ist dann noch falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444968</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Mon, 28 Jan 2008 11:16:02 GMT</pubDate></item><item><title><![CDATA[Reply to Boost:: Parsen und Datum on Mon, 28 Jan 2008 11:20:17 GMT]]></title><description><![CDATA[<p>Airdamn schrieb:</p>
<blockquote>
<p>Mondmann schrieb:</p>
<blockquote>
<p>1. Weil das Zeichen genau an dieser Stelle sein soll.<br />
Man könnte es auch weglassen.</p>
<p>2. Warum? Der Punkt steht doch in einer eckigen Klammer, was bedeutet, daß Zahlen (0-9) und Punkte vorkommen dürfen.<br />
Oder sehe ich das falsch?</p>
</blockquote>
<p>Du solltest Dir die RE-Syntax nochmal durchlesen...</p>
<p>Mondmann schrieb:</p>
<blockquote>
<p>3. Bei mir leider doch...</p>
</blockquote>
<p>...und die Doku zu Boost::regex (bzgl. match_partial).<br />
Wahrscheinlich hast Du Dein gewünschtes Ergebnis, wenn Du es weglässt.</p>
</blockquote>
<p>Stimmt haste recht!<br />
Hab Deinen Post zu späte gelesen, drum der vorherige.</p>
<p>Werde mir doe Doku reinziehen, kanns mir aber denken was partial bedeitet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>So ist es, wenn man Beispiele einfach reinkopiert ohne es zu verstehen.<br />
Habt sackrisch Dank für die Hilfe...<br />
Mondmann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1444969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444969</guid><dc:creator><![CDATA[Mondmann]]></dc:creator><pubDate>Mon, 28 Jan 2008 11:20:17 GMT</pubDate></item><item><title><![CDATA[Reply to Boost:: Parsen und Datum on Mon, 28 Jan 2008 11:24:40 GMT]]></title><description><![CDATA[<p>Nur damit wir uns verstehen, das ganze sollte in etwa so aussehen:</p>
<pre><code class="language-cpp">string url = &quot;weiter=T1dHRh5OHlc=&amp;buchart=KO&quot;;
string re = &quot;^weiter=.{1,20}&amp;buchart=([A-Z a-z]{2,5})&amp;eingabeDatum=([0-9\\.]{10})&amp;eingabeUhrzeit=([0-9:]{5})$&quot;;
boost::regex e(re);
boost::cmatch results;
bool match = boost::regex_match(url.c_str(), results, e);
if(match)
{
	for(boost::cmatch::iterator it = results.begin()+1; it != results.end(); ++it)
		cout &lt;&lt; *it &lt;&lt; endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1444972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1444972</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Mon, 28 Jan 2008 11:24:40 GMT</pubDate></item></channel></rss>