<?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[std::isspace oder to_int_type crasht mit SIGSEGV]]></title><description><![CDATA[<p>Hi!</p>
<p>Mein Programm stürzt mit einem Segfault ab. Er scheint aus <code>std::isspace</code> zu kommen, könnte aber auch von <code>to_int_type</code> stammen:</p>
<pre><code class="language-cpp">template &lt;typename CharT&gt;
        inline bool
        isspace_(CharT c)
        {
            using namespace std;
            return isspace(to_int_type(c)) ? true : false; ///Hier ist der Segfault im Debugger
        }
</code></pre>
<p>Im Debugger sehe ich, dass <code>isspace_</code> mit 65 ('A') als Funktionsparameter aufgerufen wird. Was zum Teufel kann da schiefgehen??</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/307104/std-isspace-oder-to_int_type-crasht-mit-sigsegv</link><generator>RSS for Node</generator><lastBuildDate>Fri, 07 Aug 2026 18:05:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307104.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Aug 2012 17:41:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::isspace oder to_int_type crasht mit SIGSEGV on Thu, 16 Aug 2012 17:45:08 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Mein Programm stürzt mit einem Segfault ab. Er scheint aus <code>std::isspace</code> zu kommen, könnte aber auch von <code>to_int_type</code> stammen:</p>
<pre><code class="language-cpp">template &lt;typename CharT&gt;
        inline bool
        isspace_(CharT c)
        {
            using namespace std;
            return isspace(to_int_type(c)) ? true : false; ///Hier ist der Segfault im Debugger
        }
</code></pre>
<p>Im Debugger sehe ich, dass <code>isspace_</code> mit 65 ('A') als Funktionsparameter aufgerufen wird. Was zum Teufel kann da schiefgehen??</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242581</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Thu, 16 Aug 2012 17:45:08 GMT</pubDate></item><item><title><![CDATA[Reply to std::isspace oder to_int_type crasht mit SIGSEGV on Thu, 16 Aug 2012 17:46:13 GMT]]></title><description><![CDATA[<p>Code an mi na</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242583</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Thu, 16 Aug 2012 17:46:13 GMT</pubDate></item><item><title><![CDATA[Reply to std::isspace oder to_int_type crasht mit SIGSEGV on Thu, 16 Aug 2012 17:48:07 GMT]]></title><description><![CDATA[<p>Hast auch was kompilierbares. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242585</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Thu, 16 Aug 2012 17:48:07 GMT</pubDate></item><item><title><![CDATA[Reply to std::isspace oder to_int_type crasht mit SIGSEGV on Thu, 16 Aug 2012 18:00:10 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>Hast auch was kompilierbares. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
</blockquote>
<p>nope.<br />
Das ist ja mit Boost, also, falls du das kompilieren kannst:</p>
<pre><code class="language-cpp">#define BOOST_LCAST_NO_WCHAR_T
#include &lt;boost/spirit.hpp&gt;
#include &lt;locale&gt;

#include &lt;boost/spirit/home/support.hpp&gt;
#include &lt;boost/spirit/include/qi_lit.hpp&gt;

using namespace boost::spirit;

struct programmGrammar : public grammar&lt;programmGrammar&gt;
{
        template &lt;typename Scanner&gt;
        struct definition
        {
                rule&lt;Scanner&gt; logic_and,
                              logic_or,
                              logic_not,
                              binary_logic_op,
                              unary_logic_op;

                rule&lt;Scanner&gt; character,
                              index,
                              boolean,

                              variable,
                              input,
                              indexed_variable,

                              expression,

                              binary_expr,
                              unary_expr,
                              braced_expr,

                              generalized_expr,

                              assignment,

                              programm;

                definition(const programmGrammar&amp;)
                {
                        programm = &quot;FUNCTION&quot; &gt;&gt; input &gt;&gt; *assignment &gt;&gt; &quot;RETURN&quot; &gt;&gt; expression;

                        expression = braced_expr
                                   | boolean
                                   | generalized_expr
                                   | indexed_variable;

                        boolean = ch_p('T') | ch_p('F');

                        generalized_expr =  unary_expr | binary_expr;

                        binary_expr = expression &gt;&gt; binary_logic_op &gt;&gt; expression;
                        unary_expr = unary_logic_op &gt;&gt; expression;
                        braced_expr = ch_p('(') &gt;&gt; expression &gt;&gt; ch_p(')');

                        logic_and = str_p(&quot;AND&quot;);
                        logic_or = str_p(&quot;OR&quot;);
                        logic_not = str_p(&quot;NOT&quot;);

                        binary_logic_op = logic_and | logic_or;
                        unary_logic_op = logic_not;

                        character = range_p('A', 'Z');
                        index = range_p('0', '7');

                        variable = *character;
                        input = variable;

                        indexed_variable = variable &gt;&gt; index;

                        assignment = variable &gt;&gt; &quot;:=&quot; &gt;&gt; expression;
                }

                const boost::spirit::rule&lt;Scanner&gt; &amp;start()
                {
                        return expression;
                }
        };
};

void ensureUpperCase(std::string&amp; str)
{
        for(auto iter = str.begin();iter != str.end();++iter)
                *iter = std::toupper(*iter);
}

bool valid(std::string str)
{
        ensureUpperCase(str);
        static programmGrammar PG;
        return parse(str.c_str(), PG, boost::spirit::space_p).full;
}

int main()
{
        for(;;)
        {
                std::string str;
                std::getline(std::cin, str);
                std::cout &lt;&lt; (valid(str)? &quot;valid&quot; : &quot;invalid&quot; ) &lt;&lt; &quot;!\n&quot;;
        }
}
</code></pre>
<p>Ich hab es so weit aufgeteilt, weil das irgendwie geholfen hat...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242593</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Thu, 16 Aug 2012 18:00:10 GMT</pubDate></item></channel></rss>