<?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[Tausender-Seperator nicht anzeigen]]></title><description><![CDATA[<p>Hallo,</p>
<p>folgender Quelltextausschnitt liegt zugrunde:</p>
<pre><code class="language-cpp">double d;
  d= 123456.789;

  //Lokalitaet auf Deutschland
  cout.imbue( std::locale(&quot;DE&quot;) );  

  //Exponentendarstellung abschalten
  cout.setf( ios::fixed );

  cout &lt;&lt; d;
</code></pre>
<p>Ergibt:</p>
<pre><code>123.456,789
</code></pre>
<p>Wie kann ich die Tausender-Trennzeichen abschalten?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/145116/tausender-seperator-nicht-anzeigen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 22:30:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/145116.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 25 Apr 2006 06:09:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Tausender-Seperator nicht anzeigen on Tue, 25 Apr 2006 06:09:45 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>folgender Quelltextausschnitt liegt zugrunde:</p>
<pre><code class="language-cpp">double d;
  d= 123456.789;

  //Lokalitaet auf Deutschland
  cout.imbue( std::locale(&quot;DE&quot;) );  

  //Exponentendarstellung abschalten
  cout.setf( ios::fixed );

  cout &lt;&lt; d;
</code></pre>
<p>Ergibt:</p>
<pre><code>123.456,789
</code></pre>
<p>Wie kann ich die Tausender-Trennzeichen abschalten?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044564</guid><dc:creator><![CDATA[markus.r]]></dc:creator><pubDate>Tue, 25 Apr 2006 06:09:45 GMT</pubDate></item><item><title><![CDATA[Reply to Tausender-Seperator nicht anzeigen on Tue, 25 Apr 2006 08:02:39 GMT]]></title><description><![CDATA[<p>Du könntest eine eigene numpunct&lt;&gt;-Facette schreiben und in das Locale einbinden (wenn du weitere Informationen brauchst, müsste ich zu Hause nachschauen, wie das genau funktioniert).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044614</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 25 Apr 2006 08:02:39 GMT</pubDate></item><item><title><![CDATA[Reply to Tausender-Seperator nicht anzeigen on Tue, 25 Apr 2006 08:20:26 GMT]]></title><description><![CDATA[<p>Danke, in der Richtung habe ich einiges gefunden:</p>
<pre><code class="language-cpp">template &lt;class charT&gt;
      class my_numpunct: public std::numpunct_byname&lt;charT&gt;
      {
         public:
         explicit my_numpunct(const char* name, size_t refs= 0);  //??
         protected:
         virtual string do_grouping() const { return &quot;\3&quot;; }
      };//class my_numpunct

// ein deutsches Locale erzeugen
std::locale loc(&quot;DE&quot;);

//Auf Basis des deutschen Locale mein neuen numpunct einbinden
std::locale loc_mod(loc, new my_numpunct&lt;char&gt;(&quot;DE&quot;) );
filestr.imbue(loc_mod );
</code></pre>
<p>Theoretisch sollte das funktionieren, jedoch fehlt dem Compiler ein Standard-Konstruktor zum initialisieren der Basisklasse <strong>numpunct_byname</strong>.</p>
<p>Nach meinem Verständnis hat die Basisklasse <strong>numpunct_byname</strong> nur einen parametrierten Konstruktor, über dem man z.B. die Landeskennung &quot;DE&quot; übergeben muss.</p>
<p>Das Problem sollte sich auf folgendes reduzieren lassen:</p>
<pre><code class="language-cpp">struct Basis
  {
  //nur parametrierter Konstruktor
  Basis(int a) {cout &lt;&lt; &quot;Basis: &quot; &lt;&lt; a &lt;&lt; endl;}
  };//Basis

struct Ableitung : public Basis
  {
  Ableitung(int a) // .... wie springe ich hier den
                   // parametrierten Konstruktor der Basisklasse an?
                   // bzw. kann er den nicht autmatisch benutzen?
  };//Ableitung
</code></pre>
<p>Bei der Instantiierung von Ableitung sollte zuerst der Basisklassenkonstruktor (aber mit Parameter) und dann der der Ableitung aufgerufen werden.</p>
<p>Das Problem hatte ich an einigen Stellen schon mal, wie löst man das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044625</guid><dc:creator><![CDATA[markus.r]]></dc:creator><pubDate>Tue, 25 Apr 2006 08:20:26 GMT</pubDate></item><item><title><![CDATA[Reply to Tausender-Seperator nicht anzeigen on Tue, 25 Apr 2006 08:21:05 GMT]]></title><description><![CDATA[<p>Wenn ein Locale eine Formatvorlage für tausender Trennung hat, dann kannst du sie nicht abstellen.<br />
Der einzige Weg, ist wie von CStoll erwähnt, nen numpunct Facet zu erstellen ohne tausender Trennung.</p>
<p>Geht so:</p>
<pre><code class="language-cpp">template&lt; typename T &gt;
struct my_numpunct : numpunct&lt; T &gt;
{
public:
	my_numpunct( size_t refs = 0 )
		: numpunct&lt; T &gt;( refs )
	{
	}

protected:
	virtual T do_thousands_sep()
	{
		return T();
	}
};

int main()
{
	cout.imbue( locale( locale( &quot;German_germany&quot;), new my_numpunct&lt; char &gt; ) );
	cout &lt;&lt; 10000000;
}
</code></pre>
<p>Für German_germany musst halt den entsprechenden Namen angeben, den dein compiler dafür vorsieht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044626</guid><dc:creator><![CDATA[Any]]></dc:creator><pubDate>Tue, 25 Apr 2006 08:21:05 GMT</pubDate></item><item><title><![CDATA[Reply to Tausender-Seperator nicht anzeigen on Tue, 25 Apr 2006 08:25:38 GMT]]></title><description><![CDATA[<p>Hab ne Kleinigkeit vergessen, <strong>virtual T do_thousands_sep()</strong> muss <strong>virtual T do_thousands_sep() const</strong> sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044631</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044631</guid><dc:creator><![CDATA[Any]]></dc:creator><pubDate>Tue, 25 Apr 2006 08:25:38 GMT</pubDate></item><item><title><![CDATA[Reply to Tausender-Seperator nicht anzeigen on Tue, 25 Apr 2006 08:26:47 GMT]]></title><description><![CDATA[<p>Stichwort Initialisierungsliste:</p>
<pre><code class="language-cpp">my_numpunct::my_numpunct(const char* name,size_t refs)
: numpunct_byname(name,refs)
{}
</code></pre>
<p>@Any: numpunct_byname ist wohl der bessere Weg - damit kannst du nur einen Ausschnitt aus der Facette neu anpassen (d.h. in dem Fall wird nur das Grouping geändert und der Rest der Facette (Bool-Namen, Komma, etc.) von einem benannten Locale übernommen).</p>
<p>Ergänzung <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18261">@Markus</a>: Dieses Grouping würd den Seperator aber anzeigen - gibt lieber &quot;&quot; zurück.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044632</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 25 Apr 2006 08:26:47 GMT</pubDate></item><item><title><![CDATA[Reply to Tausender-Seperator nicht anzeigen on Tue, 25 Apr 2006 08:35:40 GMT]]></title><description><![CDATA[<p>War ja auch nur nen Beispiel. Man könnte auch do_grouping überschreiben und damit die Angabe wie formatiert werden soll einfach nicht angeben.<br />
Und ja byname zu verwenden ist besser, nur wollt ich nicht überall so viel implementierungsspezifisches einbauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044638</guid><dc:creator><![CDATA[Any]]></dc:creator><pubDate>Tue, 25 Apr 2006 08:35:40 GMT</pubDate></item><item><title><![CDATA[Reply to Tausender-Seperator nicht anzeigen on Tue, 25 Apr 2006 09:23:44 GMT]]></title><description><![CDATA[<p>Vielen Dank CStoll &amp; Any für die gute Hilfe.</p>
<p>Das Problem ist nun wie folgt gelöst:</p>
<pre><code class="language-cpp">//Definition der Facet:
  namespace std
    {
    template &lt;class charT&gt;
      class my_numpunct: public std::numpunct_byname&lt;charT&gt;
      {
      public:
         my_numpunct(const char* name, size_t refs= 0) : numpunct_byname&lt;charT&gt;(name, refs) { }
         virtual basic_string&lt;charT&gt; do_grouping() const { return &quot;&quot;; }
      };//class my_numpunct
    }

  std:locale loc= std::locale(&quot;DE&quot;);    //im Standardfall DE annehmen

  //Keine Tausender-Seperatoren
  std::locale loc_mod(loc, new std::my_numpunct&lt;char&gt;(&quot;DE&quot;) );
  cout.imbue(loc_mod);

  //Keine Exponentialdarstellung &quot;wissenschaftlich&quot;
  cout.setf( ios::fixed );
</code></pre>
<p>PS: Das mit den Initialisierungslisten habe ich nie verwendet, weil ich das früher als dreckigen Hack verstanden habe. Bei Vererbung ist das jedoch sinnvoll und der einzige saubere Weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044671</guid><dc:creator><![CDATA[markus.r]]></dc:creator><pubDate>Tue, 25 Apr 2006 09:23:44 GMT</pubDate></item><item><title><![CDATA[Reply to Tausender-Seperator nicht anzeigen on Tue, 25 Apr 2006 09:24:27 GMT]]></title><description><![CDATA[<p>Es ist auch der einzige Weg const-Member und Referenz-Member zu initialisieren.</p>
<p>Du solltest davon absehen etwas in den namespace std zu schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044673</guid><dc:creator><![CDATA[Any]]></dc:creator><pubDate>Tue, 25 Apr 2006 09:24:27 GMT</pubDate></item><item><title><![CDATA[Reply to Tausender-Seperator nicht anzeigen on Tue, 25 Apr 2006 10:07:52 GMT]]></title><description><![CDATA[<p>In Wirklichkeit ist die Klasse <strong>my_numpunct</strong> eine Unterklasse von der Klasse, bei der ich diese Formatierung brauche.</p>
<p>Ich hatte das nur durch den Namespace hier dargestellt, damit das unabhängig läuft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1044708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1044708</guid><dc:creator><![CDATA[markus.r]]></dc:creator><pubDate>Tue, 25 Apr 2006 10:07:52 GMT</pubDate></item></channel></rss>