<?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[Spracheinstellung setlocale beeinflusst atof]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich hab jetzt echt nicht gewusst in welches Forum ich posten soll, wenn ich falsch liege, dann bitte verschieben.</p>
<p>Aber nun zu meinem Problem:</p>
<p>Ich binde 3rd-Party Treiber in mein Programm ein (DLL), die warum auch immer ein <em>setlocale</em> durchführt.</p>
<p>Nachdem ich einen Aufruf aus dieser DLL gemacht habe, funktioniert mein <em>atof</em> nicht mehr zuverlässig, weil Punkt zu Komma und Umgekehrt wird.</p>
<p><strong>Was kann ich tun, damit ich wieder zuverlässig <em>atof</em> verwenden kann?</strong> Ein Überschreiben mit einem erneutem <em>setlocale</em> nach entsprechendem DLL-Aufruf kann ich nicht tun, da ich dann nicht mehr weiß, ob der Treiber einwandfrei funktioniert.</p>
<p><strong>Kann ich die aktuell eingestellte Sprache herausfinden?</strong> Dann könnte ich zumindest die Konvertierungsroutinen &quot;per Hand&quot; machen vor jedem atof.</p>
<p>Für Hilfe wäre ich extrem dankbar,<br />
Norman-Timo</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/152197/spracheinstellung-setlocale-beeinflusst-atof</link><generator>RSS for Node</generator><lastBuildDate>Sun, 06 Sep 2026 21:48:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/152197.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 04 Jul 2006 08:40:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Spracheinstellung setlocale beeinflusst atof on Tue, 04 Jul 2006 08:40:34 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich hab jetzt echt nicht gewusst in welches Forum ich posten soll, wenn ich falsch liege, dann bitte verschieben.</p>
<p>Aber nun zu meinem Problem:</p>
<p>Ich binde 3rd-Party Treiber in mein Programm ein (DLL), die warum auch immer ein <em>setlocale</em> durchführt.</p>
<p>Nachdem ich einen Aufruf aus dieser DLL gemacht habe, funktioniert mein <em>atof</em> nicht mehr zuverlässig, weil Punkt zu Komma und Umgekehrt wird.</p>
<p><strong>Was kann ich tun, damit ich wieder zuverlässig <em>atof</em> verwenden kann?</strong> Ein Überschreiben mit einem erneutem <em>setlocale</em> nach entsprechendem DLL-Aufruf kann ich nicht tun, da ich dann nicht mehr weiß, ob der Treiber einwandfrei funktioniert.</p>
<p><strong>Kann ich die aktuell eingestellte Sprache herausfinden?</strong> Dann könnte ich zumindest die Konvertierungsroutinen &quot;per Hand&quot; machen vor jedem atof.</p>
<p>Für Hilfe wäre ich extrem dankbar,<br />
Norman-Timo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1091030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1091030</guid><dc:creator><![CDATA[norman_timo]]></dc:creator><pubDate>Tue, 04 Jul 2006 08:40:34 GMT</pubDate></item><item><title><![CDATA[Reply to Spracheinstellung setlocale beeinflusst atof on Tue, 04 Jul 2006 08:45:56 GMT]]></title><description><![CDATA[<p>a) Du könntest auf atof verzichten und stattedessen stringstreams für deine Zahlenkonvertierung verwenden (die können notfalls ihr eigenes Locale bekommen, das mit dem globalen C-Locale nichts mehr zu tun hat).</p>
<p>b) Ist mir nicht bekannt - außer du schreibst direkt bei der Einstellung mit, welches Locale gesetzt wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1091037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1091037</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 04 Jul 2006 08:45:56 GMT</pubDate></item><item><title><![CDATA[Reply to Spracheinstellung setlocale beeinflusst atof on Tue, 04 Jul 2006 09:04:51 GMT]]></title><description><![CDATA[<p>Wenn du &quot;setlocale(category, NULL)&quot; aufrufst, erhälst du einen String zurück, der die entsprechende Sprache für diese Kategorie beschreibt (z.B. für LC_NUMERIC).</p>
<p>Du könntest dir ja dann vor deinem atof-Aufruf die aktuelle Kategorie merken, dann neu setzen und anschließend wieder zurücksetzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1091053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1091053</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Tue, 04 Jul 2006 09:04:51 GMT</pubDate></item><item><title><![CDATA[Reply to Spracheinstellung setlocale beeinflusst atof on Tue, 04 Jul 2006 09:07:46 GMT]]></title><description><![CDATA[<p>norman_timo schrieb:</p>
<blockquote>
<p><strong>Kann ich die aktuell eingestellte Sprache herausfinden?</strong> Dann könnte ich zumindest die Konvertierungsroutinen &quot;per Hand&quot; machen vor jedem atof.</p>
</blockquote>
<p>Sicher. Das geht mit setlocale - wie intuitiv <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<pre><code class="language-cpp">const char* loc = setlocale(LC_ALL, 0);
cout &lt;&lt; &quot;Current locale is: &quot; &lt;&lt; loc &lt;&lt; endl;
</code></pre>
<p>Du kannst dir auch die Werte einzelner Facetten geben lassen oder solche ersetzen. Für dich wäre LC_NUMERIC interessant.</p>
<pre><code class="language-cpp">int main () {
	// save name of current locale category
	const char* oldNumLoc = setlocale(LC_NUMERIC, 0);	

	// set a new locale category
	setlocale(LC_NUMERIC, &quot;German&quot;);

	// use atof - uses new locale category
	const char* ds = &quot;2,12&quot;;
	double d = atof(ds);
	cout &lt;&lt; d &lt;&lt; endl;

	// restore old locale category
	setlocale(LC_NUMERIC, oldNumLoc);	
}
</code></pre>
<p>Sinnvoller ist aber sicher der von CStoll vorgeschlagene Weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1091057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1091057</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Tue, 04 Jul 2006 09:07:46 GMT</pubDate></item></channel></rss>