<?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[Spirit Qi und Strings]]></title><description><![CDATA[<p>Hi,<br />
hat jemand eine Ahnung warum ich mit Qi nicht direkt in QStrings parsen kann?</p>
<pre><code>std::string t = &quot;Hallo&quot;;
  std::string s;
  qi::rule&lt;std::string::iterator&gt; rule = +qi::char_[phoenix::ref(s) += qi::_1];
  qi::parse(t.begin(), t.end(), rule);

  QString t2 = &quot;Hallo&quot;;
  QString s2;
  qi::rule&lt;QString::iterator&gt; rule2 = +qi::char_[phoenix::ref(s2) += qi::_1];
  qi::parse(t2.begin(), t2.end(), rule2);
</code></pre>
<p>Der obere Teil funkioniert. Der untere nicht. Irgendwas mit QChar und int. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/272857/spirit-qi-und-strings</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 11:36:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/272857.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 26 Aug 2010 13:23:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Spirit Qi und Strings on Thu, 26 Aug 2010 13:23:21 GMT]]></title><description><![CDATA[<p>Hi,<br />
hat jemand eine Ahnung warum ich mit Qi nicht direkt in QStrings parsen kann?</p>
<pre><code>std::string t = &quot;Hallo&quot;;
  std::string s;
  qi::rule&lt;std::string::iterator&gt; rule = +qi::char_[phoenix::ref(s) += qi::_1];
  qi::parse(t.begin(), t.end(), rule);

  QString t2 = &quot;Hallo&quot;;
  QString s2;
  qi::rule&lt;QString::iterator&gt; rule2 = +qi::char_[phoenix::ref(s2) += qi::_1];
  qi::parse(t2.begin(), t2.end(), rule2);
</code></pre>
<p>Der obere Teil funkioniert. Der untere nicht. Irgendwas mit QChar und int. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1944639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1944639</guid><dc:creator><![CDATA[diavo]]></dc:creator><pubDate>Thu, 26 Aug 2010 13:23:21 GMT</pubDate></item><item><title><![CDATA[Reply to Spirit Qi und Strings on Thu, 26 Aug 2010 13:36:02 GMT]]></title><description><![CDATA[<p>Vielleicht, weil Qi Qchar nicht kennt (was nicht sehr überraschend ist)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1944644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1944644</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Thu, 26 Aug 2010 13:36:02 GMT</pubDate></item><item><title><![CDATA[Reply to Spirit Qi und Strings on Fri, 27 Aug 2010 07:23:16 GMT]]></title><description><![CDATA[<p>Was ich eigentlich möchte ist Folgendes:</p>
<pre><code>using namespace std;
   namespace qi = boost::spirit::qi;
   using boost::spirit::qi::double_;
   using boost::spirit::qi::_1;
   using boost::spirit::qi::phrase_parse;
   using boost::spirit::ascii::space;
   using boost::phoenix::ref;

   QString t;
   qi::rule&lt;string::iterator, QString()&gt; r1 = (+qi::char_)[hier fehlt was];
   qi::rule&lt;string::iterator &gt; r = r1[ref(t) = _1];
   string temp(&quot;Hallo&quot;);
   phrase_parse(temp.begin(), temp.end(), r, qi::space);
</code></pre>
<p>Anschlißend sollte eigentlich 'Hallo' in 't' stehen. Wenn da nicht diese unverständlichen Compiler Erros wären. Ob das nun QString oder eine anderer Attribute Typ ist sollte egal sein. Ich vermute das da eine Funktion oder Funktor fehlt, die/der aufgerufen wird mit dem geparsten Inhalt von (+qi::char_) und dem Rückgabewert des Attribute - Typs.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1944886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1944886</guid><dc:creator><![CDATA[diavo]]></dc:creator><pubDate>Fri, 27 Aug 2010 07:23:16 GMT</pubDate></item><item><title><![CDATA[Reply to Spirit Qi und Strings on Fri, 27 Aug 2010 07:50:33 GMT]]></title><description><![CDATA[<p>vielleicht gehts mit einer der statischen QString::fromXYZ()'s?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1944895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1944895</guid><dc:creator><![CDATA[padreigh]]></dc:creator><pubDate>Fri, 27 Aug 2010 07:50:33 GMT</pubDate></item><item><title><![CDATA[Reply to Spirit Qi und Strings on Tue, 31 Aug 2010 05:51:27 GMT]]></title><description><![CDATA[<p>Die Lösung ist</p>
<pre><code>namespace boost { namespace spirit { namespace traits
{
  // Make Qi recognize QString as a container
  template &lt;&gt; struct is_container&lt;QString&gt; : mpl::true_ {};

  // Expose the container's (QString's) value_type
  template &lt;&gt; struct container_value&lt;QString&gt; : mpl::identity&lt;QChar&gt; {};

  // Define how to insert a new element at the end of the container (QString)
  template &lt;&gt;
  struct push_back_container&lt;QString, QChar&gt;
  {
    static bool call(QString&amp; c, QChar const&amp; val)
    {
      c.append(val);
      return true;
    }
  };
}}}
</code></pre>
<p>Damit macht man neue Container bei Spirit bekannt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946360</guid><dc:creator><![CDATA[diavo]]></dc:creator><pubDate>Tue, 31 Aug 2010 05:51:27 GMT</pubDate></item></channel></rss>