<?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.units] Parser für Einheiten]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Für eine Erweiterung in meinem Programm bräuchte ich eine Funktionalität ähnlich wie angeboten in JScience:<br />
<a href="http://jscience.org/jsr-275/api/javax/measure/unit/UnitFormat.html" rel="nofollow">http://jscience.org/jsr-275/api/javax/measure/unit/UnitFormat.html</a></p>
<p>Es geht z.B. darum, dass ich einen textuellen Input von &quot;900000*Ws&quot; bekomme und diesen in &quot;0.25*kWh&quot; umwandeln muss. Das natürlich auch für eine Serie anderer physikalischer Einheiten, wie etwa &quot;m^3&quot;. Boost Units bietet diese Umrechnungs-Funktionalität, ist aber sehr Compile-Time-Check lastig, weshalb diese Parse-Funktion vermutlich auch nicht vorimplementiert ist.</p>
<p>Gibt es eine Variante, das mit vernünftigem Aufwand in C++ zu implementieren? Gibt es dazu eventuell passende, Runtime-checked Libraries?</p>
<p>Danke für Vorschläge und Gruss<br />
Kessi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/282508/boost-units-parser-für-einheiten</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 01:42:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/282508.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Feb 2011 14:12:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [boost.units] Parser für Einheiten on Mon, 21 Feb 2011 14:12:12 GMT]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Für eine Erweiterung in meinem Programm bräuchte ich eine Funktionalität ähnlich wie angeboten in JScience:<br />
<a href="http://jscience.org/jsr-275/api/javax/measure/unit/UnitFormat.html" rel="nofollow">http://jscience.org/jsr-275/api/javax/measure/unit/UnitFormat.html</a></p>
<p>Es geht z.B. darum, dass ich einen textuellen Input von &quot;900000*Ws&quot; bekomme und diesen in &quot;0.25*kWh&quot; umwandeln muss. Das natürlich auch für eine Serie anderer physikalischer Einheiten, wie etwa &quot;m^3&quot;. Boost Units bietet diese Umrechnungs-Funktionalität, ist aber sehr Compile-Time-Check lastig, weshalb diese Parse-Funktion vermutlich auch nicht vorimplementiert ist.</p>
<p>Gibt es eine Variante, das mit vernünftigem Aufwand in C++ zu implementieren? Gibt es dazu eventuell passende, Runtime-checked Libraries?</p>
<p>Danke für Vorschläge und Gruss<br />
Kessi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2024182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2024182</guid><dc:creator><![CDATA[KessiMC]]></dc:creator><pubDate>Mon, 21 Feb 2011 14:12:12 GMT</pubDate></item><item><title><![CDATA[Reply to [boost.units] Parser für Einheiten on Mon, 21 Feb 2011 14:40:43 GMT]]></title><description><![CDATA[<p>Ich weiß nicht ob es ganz das ist, was du möchtest, aber vielleicht kannst du <a href="https://github.com/borlox/unitlib" rel="nofollow">hiermit</a> etwas anfangen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2024199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2024199</guid><dc:creator><![CDATA[DerKuchen]]></dc:creator><pubDate>Mon, 21 Feb 2011 14:40:43 GMT</pubDate></item><item><title><![CDATA[Reply to [boost.units] Parser für Einheiten on Mon, 21 Feb 2011 14:51:32 GMT]]></title><description><![CDATA[<p>@ DerKuchen: Hey, das muss ich mir mal genauer anschauen! Habe letztens für eines meiner Projekte etwas ähnliches programmoratisiert (dynamisch einheiten laden, nach dynamisch geladenen algebraischen Regeln vereinfachen etc.). Aber ich hatte irgendwann das Problem, die Muster gegen Sequenzen von &quot;gleichgestellten&quot; (weil kommutativen) Operationen zu matchen, müsste mal raussuchen, was genau das Problem war und bei dir vergleichen^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2024212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2024212</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 21 Feb 2011 14:51:32 GMT</pubDate></item><item><title><![CDATA[Reply to [boost.units] Parser für Einheiten on Mon, 21 Feb 2011 15:42:52 GMT]]></title><description><![CDATA[<p>DerKuchen schrieb:</p>
<blockquote>
<p>Ich weiß nicht ob es ganz das ist, was du möchtest, aber vielleicht kannst du <a href="https://github.com/borlox/unitlib" rel="nofollow">hiermit</a> etwas anfangen.</p>
</blockquote>
<p>Besten Dank schon mal. Das sieht zwar sehr vielversprechend aus, ist aber noch nicht wirklich einsatzbereit. So gibt es z.B. keine Variante, Watt anders darzustellen als &quot;200 m^2 kg s^-3&quot;. Ausserdem fehlt mir eine Konvertierungsfunktion, z.B. von Ws zu kWh.</p>
<p>Die Features, die mir wichtig wären, sind Konvertierung (Ws =&gt; kWh) und interpretieren von Strings (z.B. &quot;75 Ws&quot; einlesen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2024260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2024260</guid><dc:creator><![CDATA[KessiMC]]></dc:creator><pubDate>Mon, 21 Feb 2011 15:42:52 GMT</pubDate></item><item><title><![CDATA[Reply to [boost.units] Parser für Einheiten on Mon, 21 Feb 2011 17:53:12 GMT]]></title><description><![CDATA[<p>Kessi, auf den ersten Blick machte es mir den Eindruck, als könnte man die Einheiten leicht erweitern... und um den Umrechnungsfaktor zu bekommen, brauchst du die beiden ja nur durcheinander teilen, ich meine auch sowas dort gesehen zu haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2024336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2024336</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 21 Feb 2011 17:53:12 GMT</pubDate></item><item><title><![CDATA[Reply to [boost.units] Parser für Einheiten on Tue, 22 Feb 2011 16:44:04 GMT]]></title><description><![CDATA[<p>Ich bin zwar sehr überrascht, muss dir aber Recht geben. Die Library ist zwar äusserst kompakt, bietet mit etwas Vorbereitung aber genug Features, um meine aktuellen Probleme zu lösen:</p>
<pre><code class="language-cpp">bool UnitConverter::measuresEnergy(const Unit &amp;unit) const {
    string measureOfUnit(&quot;1 &quot; + lexical_cast&lt;string&gt; (unit));
    unit_t measure;
    ul_parse(measureOfUnit.c_str(), &amp;measure);
    unit_t reference;
    ul_parse(&quot;1 Wh&quot;, &amp;reference);
    return ul_cmp(&amp;reference, &amp;measure) &amp; UL_SAME_UNIT;
}

bool UnitConverter::convertToKiloWattHours(Quantity &amp;quantity) const {
    string unit(&quot; &quot; + lexical_cast&lt;string&gt; (quantity.getUnit()));
    if (!measuresEnergy(quantity.getUnit())) {
        throw IncompatibleMeasureException();
    }
    if (unit != &quot; kWh&quot;) {
        string textualQuantity(lexical_cast&lt;string&gt; (quantity.getValue()) + unit);
        unit_t measure;
        ul_parse(textualQuantity.c_str(), &amp;measure);
        quantity.setValue(measure.factor / 1000 / 3600);
        quantity.setUnit(Unit(&quot;kWh&quot;));
        return true;
    }
    return false;
}

void UnitConverter::enableUnitArithmetic() {
    if (!ul_init()) {
        throw PhysicsSubsystemException();
    }
    ul_parse_rule(&quot;N= 1 kg * m / s^2&quot;);
    ul_parse_rule(&quot;Nm= 1 N * m&quot;);
    ul_parse_rule(&quot;J= 1 Nm&quot;);
    ul_parse_rule(&quot;W= 1 J/s&quot;);
    ul_parse_rule(&quot;min= 60 s&quot;);
    ul_parse_rule(&quot;h= 60 min&quot;);
    ul_parse_rule(&quot;Wh= 1 W * h&quot;);
    ul_parse_rule(&quot;Ws= 1 W * s&quot;);
}

void UnitConverter::disableUnitArithmetic() {
    ul_quit();
}
</code></pre>
<p>Besten Dank also nochmals und Gruss<br />
Kessi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2024851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2024851</guid><dc:creator><![CDATA[KessiMC]]></dc:creator><pubDate>Tue, 22 Feb 2011 16:44:04 GMT</pubDate></item></channel></rss>