<?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[string zu integer]]></title><description><![CDATA[<p>hi,</p>
<p>ich hab folgendes problem bei dem ich nicht weiterkomm.<br />
ich muss eine textdatei einlesen. die dort enthaltenen zahlen muss ich<br />
in integerwerte wandeln.<br />
jede zahl steht in der textdatei in einer zeile. zwischen allen<br />
zahlen befindet sich eine leerzeile.</p>
<pre><code>int int_number;
std::fstream file(&quot;xyz&quot; , std::ios::in);
</code></pre>
<p>wenn ich jetzt einfach mit</p>
<pre><code>file &gt;&gt; int_number;
</code></pre>
<p>die werte einlese kann ich die eingelesenen werte ja nicht<br />
überprüfen. ich möchte auch die leerzeilen erkennen können.<br />
mit</p>
<pre><code>file &gt;&gt; int_number;
</code></pre>
<p>wird ja einfach immer<br />
zum mächsten string gesprungen. wie kann ich am besten<br />
werte aus einer textdatei einlesen in integer wandeln und dann<br />
auf die werte auf ihre richigkeit überprüfen? auch sollen leer-<br />
zeilen nicht übersprungen werden sondern eingelesen und erkannt<br />
werden.</p>
<p>thx</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/285737/string-zu-integer</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 05:58:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/285737.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 Apr 2011 22:41:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to string zu integer on Tue, 26 Apr 2011 22:41:28 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>ich hab folgendes problem bei dem ich nicht weiterkomm.<br />
ich muss eine textdatei einlesen. die dort enthaltenen zahlen muss ich<br />
in integerwerte wandeln.<br />
jede zahl steht in der textdatei in einer zeile. zwischen allen<br />
zahlen befindet sich eine leerzeile.</p>
<pre><code>int int_number;
std::fstream file(&quot;xyz&quot; , std::ios::in);
</code></pre>
<p>wenn ich jetzt einfach mit</p>
<pre><code>file &gt;&gt; int_number;
</code></pre>
<p>die werte einlese kann ich die eingelesenen werte ja nicht<br />
überprüfen. ich möchte auch die leerzeilen erkennen können.<br />
mit</p>
<pre><code>file &gt;&gt; int_number;
</code></pre>
<p>wird ja einfach immer<br />
zum mächsten string gesprungen. wie kann ich am besten<br />
werte aus einer textdatei einlesen in integer wandeln und dann<br />
auf die werte auf ihre richigkeit überprüfen? auch sollen leer-<br />
zeilen nicht übersprungen werden sondern eingelesen und erkannt<br />
werden.</p>
<p>thx</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2054833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2054833</guid><dc:creator><![CDATA[xxmaxx]]></dc:creator><pubDate>Tue, 26 Apr 2011 22:41:28 GMT</pubDate></item><item><title><![CDATA[Reply to string zu integer on Tue, 26 Apr 2011 22:54:02 GMT]]></title><description><![CDATA[<p>Du kannst die Datei zeilenweise per getline() einlesen und dann den Inhalt jeder Zeile auswerten.</p>
<p>Edit: Oder du zählst mit peek()/get() nach, wieviele Leerzeilen zwischen den einzelnen Werten kamen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2054841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2054841</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 26 Apr 2011 22:54:02 GMT</pubDate></item><item><title><![CDATA[Reply to string zu integer on Wed, 27 Apr 2011 08:54:02 GMT]]></title><description><![CDATA[<pre><code>Du kannst die Datei zeilenweise per getline() einlesen und dann den Inhalt jeder Zeile auswerten.
</code></pre>
<p>ja ok aber wie kann ich dann den string am besten in einen integer wandeln?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2054916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2054916</guid><dc:creator><![CDATA[xxmaxx]]></dc:creator><pubDate>Wed, 27 Apr 2011 08:54:02 GMT</pubDate></item><item><title><![CDATA[Reply to string zu integer on Wed, 27 Apr 2011 08:59:03 GMT]]></title><description><![CDATA[<p>xxmaxx schrieb:</p>
<blockquote>
<p>ja ok aber wie kann ich dann den string am besten in einen integer wandeln?</p>
</blockquote>
<p>Dafür haben wir einen Artikel in der FAQ, der einige Ansätze zur Auswahl stellt.</p>
<p>PS: Daß jemand code-Tags für Zitate verwendet, ist mir auch neu <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2054918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2054918</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 27 Apr 2011 08:59:03 GMT</pubDate></item><item><title><![CDATA[Reply to string zu integer on Wed, 27 Apr 2011 08:59:31 GMT]]></title><description><![CDATA[<p>Am einfachsten mit <a href="http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/" rel="nofollow">atoi</a>. Du kannst aber auch stringstreams benutzen (geht dann auch mit &gt;&gt;). Sie auch den Eintrag in der FAQ: <a href="http://www.c-plusplus.net/forum/39488" rel="nofollow">http://www.c-plusplus.net/forum/39488</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2054919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2054919</guid><dc:creator><![CDATA[Oberon_0]]></dc:creator><pubDate>Wed, 27 Apr 2011 08:59:31 GMT</pubDate></item><item><title><![CDATA[Reply to string zu integer on Wed, 27 Apr 2011 09:02:43 GMT]]></title><description><![CDATA[<p><code>string -&gt; c_str() -&gt; atoi() -&gt; int</code></p>
<p>oder mit</p>
<pre><code class="language-cpp">std::stringstream sstr(myString);
int Zahl;
sstr &gt;&gt; Zahl;
</code></pre>
<p>Grüße,<br />
Rewind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2054922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2054922</guid><dc:creator><![CDATA[*Rewind*]]></dc:creator><pubDate>Wed, 27 Apr 2011 09:02:43 GMT</pubDate></item><item><title><![CDATA[Reply to string zu integer on Wed, 27 Apr 2011 09:20:58 GMT]]></title><description><![CDATA[<p>Und hier für ALLE Typen. Einfach, weil ich Langeweile hab.</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
T convert(const std::string&amp; str)
{
    T x;
    std::stringstream ss(str);
    str &gt;&gt; x;
    return x;
}

int x = convert&lt;int&gt;(&quot;100 Elefanten rennen durch den Garten&quot;);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2054927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2054927</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Wed, 27 Apr 2011 09:20:58 GMT</pubDate></item><item><title><![CDATA[Reply to string zu integer on Wed, 27 Apr 2011 09:21:38 GMT]]></title><description><![CDATA[<p>atoi wär eine lösung, darf ich aber nicht verwenden. wenn ich das mit stringstream mache:</p>
<pre><code>getline(file, str_number);
std::stringstream sstr(str_number);
sstr &gt;&gt; int_number;
</code></pre>
<p>kann ich ja gleich schreiben</p>
<pre><code>file&gt;&gt; int_number;
</code></pre>
<p>weil in beiden fällen wird wenn die zeile leer ist bis zum nächsten wert<br />
gesprungen und der dann eingelesen.<br />
ausserdem will ich auch falsche werte erkennen wie 10A3. Hierbei wird<br />
dann ja nur bis zum A eingelesen und mein integer wert wäre 10. gibt es<br />
in c++ keine alternative zu atoi?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2054929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2054929</guid><dc:creator><![CDATA[xxmaxx]]></dc:creator><pubDate>Wed, 27 Apr 2011 09:21:38 GMT</pubDate></item><item><title><![CDATA[Reply to string zu integer on Wed, 27 Apr 2011 09:25:43 GMT]]></title><description><![CDATA[<p>Was spricht denn dagegen, wenn du vor der Umwandlung noch nachsiehst, ob der String überhaupt gefüllt wurde?</p>
<p>xxmaxx schrieb:</p>
<blockquote>
<p>weil in beiden fällen wird wenn die zeile leer ist bis zum nächsten wert gesprungen und der dann eingelesen.</p>
</blockquote>
<p>Nein, beim Stringstream bestimmt nicht - der kennt nur die aktuelle Zeile der Datei.</p>
<blockquote>
<p>ausserdem will ich auch falsche werte erkennen wie 10A3. Hierbei wird<br />
dann ja nur bis zum A eingelesen und mein integer wert wäre 10. gibt es<br />
in c++ keine alternative zu atoi?</p>
</blockquote>
<p>Da wäre eventuell strtol() für dich geeignet - das gibt auch zurück, wieviel von der Eingabe es verarbeiten konnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2054934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2054934</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 27 Apr 2011 09:25:43 GMT</pubDate></item><item><title><![CDATA[Reply to string zu integer on Wed, 27 Apr 2011 09:42:54 GMT]]></title><description><![CDATA[<blockquote>
<p>Was spricht denn dagegen, wenn du vor der Umwandlung noch nachsiehst, ob der String überhaupt gefüllt wurde?</p>
</blockquote>
<p>ja mach ich auch. nur hilft mir das bei 10A0 nicht viel.</p>
<blockquote>
<p>Nein, beim Stringstream bestimmt nicht - der kennt nur die aktuelle Zeile der Datei.</p>
</blockquote>
<p>stimmt. hab ich mich geirrt.</p>
<blockquote>
<p>Da wäre eventuell strtol() für dich geeignet - das gibt auch zurück, wieviel von der Eingabe es verarbeiten konnte.</p>
</blockquote>
<p>ist nicht besser als atoi da ich im c++ style bleiben soll.</p>
<p>vielen dank auch. ich werd mir da jetzt mit stringstream was zusammen<br />
bauen <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/2054945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2054945</guid><dc:creator><![CDATA[xxmaxx]]></dc:creator><pubDate>Wed, 27 Apr 2011 09:42:54 GMT</pubDate></item><item><title><![CDATA[Reply to string zu integer on Wed, 27 Apr 2011 09:51:28 GMT]]></title><description><![CDATA[<p>xxmaxx schrieb:</p>
<blockquote>
<p>ist nicht besser als atoi da ich im c++ style bleiben soll.</p>
</blockquote>
<p>Na gut, wie wäre es mit sowas:</p>
<pre><code class="language-cpp">stringstream conv(zeile);
int wert;
conv&gt;&gt;wert;
if(conv.peek() != EOF)
  //Fehler - überflüssige Werte im String
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2054951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2054951</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 27 Apr 2011 09:51:28 GMT</pubDate></item><item><title><![CDATA[Reply to string zu integer on Wed, 27 Apr 2011 09:57:58 GMT]]></title><description><![CDATA[<p>Ich habe ein wenig das Gefühl, dass bei derartigen Threads wie hier manchmal am Thema vorbeigeredet wird.</p>
<p>xxmaxx schrieb:</p>
<blockquote>
<p>ich möchte auch die leerzeilen erkennen können.</p>
</blockquote>
<p>Was machst Du mit den 'erkannten Leerzeilen'?</p>
<p>oder besser: gib mal ein Beispiel so einer Datei an. Und wie sieht die Datenstruktur aus, mit der - nach(!) dem Einlesen und interpretieren - dann innerhalb des Programms weiter gearbeitet wird?</p>
<p>Was wäre der Unterschied in der Bedeutung zwischen</p>
<pre><code>12
13

14
</code></pre>
<p>und</p>
<pre><code>12

13

14
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2054954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2054954</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Wed, 27 Apr 2011 09:57:58 GMT</pubDate></item><item><title><![CDATA[Reply to string zu integer on Wed, 27 Apr 2011 10:27:51 GMT]]></title><description><![CDATA[<p>Hallo Eisflamme,</p>
<p>bei deiner convert-Funktion wäre es noch besser, wenn man explizit</p>
<pre><code class="language-cpp">T x = T();
</code></pre>
<p>verwendet, da hiermit auch POD-Typen explizit initialisiert werden (d.h. mit 0), so daß bei einem Fehler dieser als Wert zurückgegeben wird, anstatt ein uninitialisierter (zufälliger) Wert.<br />
(Nachteil wiederum ist, daß jetzt ein öffentlicher Kopierkonstruktor verfügbar sein muß, selbst wenn dieser wegoptimiert wird - ich meine <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a> hatte neulich dies so geschrieben.)</p>
<p>Es mag sein, daß der Standard dies explizit auch bei &quot;T x&quot; so verlangt, aber zwei Compiler, die ich mal verwendet hatte (BCB 5, VC7) haben diese Initialisierung nicht vorgenommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2054984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2054984</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Wed, 27 Apr 2011 10:27:51 GMT</pubDate></item></channel></rss>