<?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 1.60. Asio error_code-enum zu std::string?]]></title><description><![CDATA[<p>ich gebe bei boost errors gerne den enum-Namen + message aus<br />
bisher machen ich das mit einer grossen if/switch Funktion</p>
<pre><code>std::string boost_error_error_code_enum_str(const boost::system::error_code&amp; p_error)
  {
    //basic_errors
    if(p_error == boost::asio::error::access_denied) return &quot;boost::asio::error::access_denied&quot;;
    if(p_error == boost::asio::error::address_family_not_supported) return &quot;boost::asio::error::address_family_not_supported&quot;;
    //....
    return &quot;unknown boost error&quot;;
  }
</code></pre>
<p>und nutze das dann so</p>
<pre><code>printf(&quot;chat_client.cpp handle_connect error-enum: %s, error-message: %s&quot;, boost_error_error_code_enum_str(error).c_str(), error.message().c_str());  //  hier landen wir wenn der server nicht connectierbar ist
</code></pre>
<p>gibt es einen einfacheren Weg an den enum-Namen zu kommen<br />
mir reicht auch &quot;access_denied&quot; usw. - ich mache das einfach gerne um sehr schnell einen Ueberblick zu bekommen welche spezifischen Fehler so auflaufen</p>
<p>bietet da Boost/Asio etwas in der Art an?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/336901/boost-1-60-asio-error_code-enum-zu-std-string</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 22:16:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/336901.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 23 Feb 2016 19:55:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Boost 1.60. Asio error_code-enum zu std::string? on Tue, 23 Feb 2016 19:55:57 GMT]]></title><description><![CDATA[<p>ich gebe bei boost errors gerne den enum-Namen + message aus<br />
bisher machen ich das mit einer grossen if/switch Funktion</p>
<pre><code>std::string boost_error_error_code_enum_str(const boost::system::error_code&amp; p_error)
  {
    //basic_errors
    if(p_error == boost::asio::error::access_denied) return &quot;boost::asio::error::access_denied&quot;;
    if(p_error == boost::asio::error::address_family_not_supported) return &quot;boost::asio::error::address_family_not_supported&quot;;
    //....
    return &quot;unknown boost error&quot;;
  }
</code></pre>
<p>und nutze das dann so</p>
<pre><code>printf(&quot;chat_client.cpp handle_connect error-enum: %s, error-message: %s&quot;, boost_error_error_code_enum_str(error).c_str(), error.message().c_str());  //  hier landen wir wenn der server nicht connectierbar ist
</code></pre>
<p>gibt es einen einfacheren Weg an den enum-Namen zu kommen<br />
mir reicht auch &quot;access_denied&quot; usw. - ich mache das einfach gerne um sehr schnell einen Ueberblick zu bekommen welche spezifischen Fehler so auflaufen</p>
<p>bietet da Boost/Asio etwas in der Art an?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2488384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2488384</guid><dc:creator><![CDATA[Gast3]]></dc:creator><pubDate>Tue, 23 Feb 2016 19:55:57 GMT</pubDate></item><item><title><![CDATA[Reply to Boost 1.60. Asio error_code-enum zu std::string? on Tue, 23 Feb 2016 20:28:04 GMT]]></title><description><![CDATA[<p>Gast3 schrieb:</p>
<blockquote>
<p>bietet da Boost/Asio etwas in der Art an?</p>
</blockquote>
<p>Keine Ahnung.</p>
<p>Wenn es die Library nicht bereits unterstützt, bzw. wenn ich die Library selbst schreibe, ist das ein Fall wo ich Makros verwende:</p>
<pre><code class="language-cpp">std::string FooToString(Foo foo)
	{
#define FOOLIB_FOOTOSTRING_CASE(name) \
	case name: return BOOST_PP_STRINGIZE(name);

		switch (foo)
		{
		FOOLIB_FOOTOSTRING_CASE(Foo_Blub)
		FOOLIB_FOOTOSTRING_CASE(Foo_Blah)
		FOOLIB_FOOTOSTRING_CASE(Foo_Dingsen)

		default:
			assert(0 &amp;&amp; &quot;invalid Foo value&quot;);
			return str(boost::format(&quot;Foo %1%&quot;) % static_cast&lt;int&gt;(foo));
		}

#undef FOOLIB_FOOTOSTRING_CASE
	}
</code></pre>
<p>Makros FTW <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2488389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2488389</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 23 Feb 2016 20:28:04 GMT</pubDate></item><item><title><![CDATA[Reply to Boost 1.60. Asio error_code-enum zu std::string? on Tue, 23 Feb 2016 21:26:11 GMT]]></title><description><![CDATA[<p>Ich bin mir ziemlich sicher, dass du nicht an den enum namen oder wenigstens den system error namen kommst (bsp: EABORT).</p>
<p>Ich hätte den Kram irgendwann einfach kopiert und es (evtl ähnlich - da gibts mehrere Alternativen) wie hustbär gemacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2488395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2488395</guid><dc:creator><![CDATA[5cript]]></dc:creator><pubDate>Tue, 23 Feb 2016 21:26:11 GMT</pubDate></item><item><title><![CDATA[Reply to Boost 1.60. Asio error_code-enum zu std::string? on Tue, 23 Feb 2016 21:44:28 GMT]]></title><description><![CDATA[<p>Gast3 schrieb:</p>
<blockquote>
<p>.. und nutze das dann so</p>
<pre><code>printf(&quot;chat_client.cpp handle_connect error-enum: %s, error-message: %s&quot;, boost_error_error_code_enum_str(error).c_str(), error.message().c_str());  //  hier landen wir wenn der server nicht connectierbar ist
</code></pre>
<p>gibt es einen einfacheren Weg an den enum-Namen zu kommen<br />
mir reicht auch &quot;access_denied&quot; usw. - ich mache das einfach gerne um sehr schnell einen Ueberblick zu bekommen welche spezifischen Fehler so auflaufen</p>
<p>bietet da Boost/Asio etwas in der Art an?</p>
</blockquote>
<p>Ja - die Lösung steht doch schon in Deinem Code. Die Methode ' <code>std::string error_code::message()</code> ' liefert den Fehlertext. Die Implementierung greift auf die Windows-Funktion <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms679351%28v=vs.85%29.aspx" rel="nofollow">FormatMessage</a> zurück. Oder habe ich Deine Frage nicht verstanden?<br />
Der Text ist aber abhängig von der eingestellten Sprache.</p>
<p>Edit: FormatMessage wird natürlich nur unter Windows gerufen; bei anderen Betriebssystemen gibt es aber ähnliches. Eine Posix-Implementierung existiert meines Erachten 'eingebaut'.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2488396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2488396</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 23 Feb 2016 21:44:28 GMT</pubDate></item><item><title><![CDATA[Reply to Boost 1.60. Asio error_code-enum zu std::string? on Wed, 24 Feb 2016 04:40:52 GMT]]></title><description><![CDATA[<blockquote>
<p>Oder habe ich Deine Frage nicht verstanden?</p>
</blockquote>
<p>ja das hast du</p>
<blockquote>
<p>ich gebe bei boost errors gerne den <strong>enum</strong>-Namen + message aus</p>
</blockquote>
<blockquote>
<pre><code>if(p_error == boost::asio::error::access_denied) return &quot;boost::asio::error::access_denied&quot;;
</code></pre>
</blockquote>
<blockquote>
<p>gibt es einen einfacheren Weg an den <strong>enum</strong>-Namen zu kommen</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2488418</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2488418</guid><dc:creator><![CDATA[Gast3]]></dc:creator><pubDate>Wed, 24 Feb 2016 04:40:52 GMT</pubDate></item></channel></rss>