<?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[Frage zu wstringstream]]></title><description><![CDATA[<p>Hiho,</p>
<p>ich teste folgender Maßen, ob ein string eine Zahl ist:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
inline void isStringANumber(const CStdData::StringType&amp; str,bool&amp; isNumber,CStdData::StringType&amp; errorStr,const wchar_t* errorMsg)
{
	T value;
	std::wstringstream temp;

	temp.str(str);    
	temp &gt;&gt; value;
	if (temp.fail())
	{
		errorStr += errorMsg;
		isNumber = false;
	}
}
</code></pre>
<p>So wenn das T ein int ist und im string ein float steht, dann wandelt der automatisch um und bringt keinen Fehler. ich hätte aber gerne, dass bei T=int Fließkommazhalen im String auch Fehler werfen. Lässt sich das irgendwie am String-Stream einstellen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/245603/frage-zu-wstringstream</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 17:29:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/245603.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Jul 2009 09:31:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu wstringstream on Thu, 16 Jul 2009 09:31:19 GMT]]></title><description><![CDATA[<p>Hiho,</p>
<p>ich teste folgender Maßen, ob ein string eine Zahl ist:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
inline void isStringANumber(const CStdData::StringType&amp; str,bool&amp; isNumber,CStdData::StringType&amp; errorStr,const wchar_t* errorMsg)
{
	T value;
	std::wstringstream temp;

	temp.str(str);    
	temp &gt;&gt; value;
	if (temp.fail())
	{
		errorStr += errorMsg;
		isNumber = false;
	}
}
</code></pre>
<p>So wenn das T ein int ist und im string ein float steht, dann wandelt der automatisch um und bringt keinen Fehler. ich hätte aber gerne, dass bei T=int Fließkommazhalen im String auch Fehler werfen. Lässt sich das irgendwie am String-Stream einstellen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1743991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1743991</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Thu, 16 Jul 2009 09:31:19 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu wstringstream on Thu, 16 Jul 2009 10:00:08 GMT]]></title><description><![CDATA[<p>Wenn du aus einem Stringstream, der ein float enthält, ein int liest, dann wird nur der Teil bis zum Dezimalpunkt gelesen, der Rest verbleibt im Stream. Du kannst das also problemlos mit <code>temp.str().empty()</code> überprüfen.</p>
<p>Dann noch ein paar Designdinge:</p>
<ol>
<li>Funktionen in C++ haben nicht umsonst Rückgabewerte. Den bool als Out-Parameter zu übergeben ist unüblich, schwer zu entziffern und sinnlos. Gib den bool einfach als Ergebnis der Funktion zurück.</li>
<li>errorStr und errorMsg sollten vom gleichen Typ sein, wenn du sie eh aneinander hängst.</li>
<li>errorStr und errorMsg haben in der Funktion eigentlich nichts verloren. Die Funktion sollte genau eine Aufgabe haben, und das ist der Test ob es sich bei der Eingabe um eine Zahl handelt. Das Zusammenbasteln einer Fehlermeldung ist eine andere Aufgabe auf einer anderen Abstraktionsebene und sollte an anderer Stelle erfolgen.</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/1744007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1744007</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 16 Jul 2009 10:00:08 GMT</pubDate></item></channel></rss>