<?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[tellg() position]]></title><description><![CDATA[<p>Leute nur mal ne kurze Frage. Kann es sein dass die Funktion tellg() die aktuelle stelle im stream verändern.</p>
<p>Wollte nämlich mal bestimmte Zeilenpos währen des einlesens speichern, aber irgendwie vermurkst er was...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/263135/tellg-position</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 20:29:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/263135.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 16 Mar 2010 14:22:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to tellg() position on Tue, 16 Mar 2010 14:22:57 GMT]]></title><description><![CDATA[<p>Leute nur mal ne kurze Frage. Kann es sein dass die Funktion tellg() die aktuelle stelle im stream verändern.</p>
<p>Wollte nämlich mal bestimmte Zeilenpos währen des einlesens speichern, aber irgendwie vermurkst er was...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1869868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1869868</guid><dc:creator><![CDATA[ismaild]]></dc:creator><pubDate>Tue, 16 Mar 2010 14:22:57 GMT</pubDate></item><item><title><![CDATA[Reply to tellg() position on Tue, 16 Mar 2010 14:30:40 GMT]]></title><description><![CDATA[<p>ismaild schrieb:</p>
<blockquote>
<p>Leute nur mal ne kurze Frage. Kann es sein dass die Funktion tellg() die aktuelle stelle im stream verändern.</p>
<p>Wollte nämlich mal bestimmte Zeilenpos währen des einlesens speichern, aber irgendwie vermurkst er was...</p>
</blockquote>
<p>Nein tut es nicht. Irgendwie vermurkst du wohl was <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1869872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1869872</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Tue, 16 Mar 2010 14:30:40 GMT</pubDate></item><item><title><![CDATA[Reply to tellg() position on Tue, 16 Mar 2010 22:20:43 GMT]]></title><description><![CDATA[<pre><code>ifstream  data(&quot;test.txt&quot;);
    int FileCharCount(0),i(0);
    data.seekg(0, std::ios::end);
    FileCharCount= data.tellg();
    data.seekg(0, std::ios::beg);
    std::ios::pos_type linepoint;
    while(getline(data,line))
    {
        if(i==0)
            linepoint= FileCharCount-(FileCharCount-(data.tellg()-5));
        else
            linepoint= FileCharCount-(FileCharCount-data.tellg());
         .....
        //speichere zeilenanfangspunkt
        .....
      i++;
     }
</code></pre>
<p>Ok was vermurks ich hier steh gerade aufm Schlauch??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1870116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1870116</guid><dc:creator><![CDATA[ismaild]]></dc:creator><pubDate>Tue, 16 Mar 2010 22:20:43 GMT</pubDate></item><item><title><![CDATA[Reply to tellg() position on Tue, 16 Mar 2010 22:35:19 GMT]]></title><description><![CDATA[<p>Warum schreibst du statt</p>
<pre><code class="language-cpp">linepoint = FileCharCount-(FileCharCount-data.tellg());
</code></pre>
<p>nicht</p>
<pre><code class="language-cpp">linepoint = data.tellg();
</code></pre>
<p>?</p>
<p>Ich vermute, was er da &quot;vermurkst&quot; ist, dass der Anfangspunkt der zweiten Zeile nicht gespeichert wird, was auch wenig verwunderlich ist, weil du in dem Schleifendurchlauf data.tellg() - 5 speicherst, aber deine Fehlerbeschreibung war nicht besonders erhellend.</p>
<p>Wie wäre es mit</p>
<pre><code class="language-cpp">linenums.push_back(0);

while(std::getline(data, line)) {
  linenums.push_back(data.tellg());
}

linenums.pop_back();
</code></pre>
<p>, wobei linenums der Container für die Zeilennummern ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1870124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1870124</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Tue, 16 Mar 2010 22:35:19 GMT</pubDate></item><item><title><![CDATA[Reply to tellg() position on Tue, 16 Mar 2010 22:48:50 GMT]]></title><description><![CDATA[<pre><code>linepoint = FileCharCount-(FileCharCount-(data.tellg()-5))
          = FileCharCount - FileCharCount + data.tellg() - 5
          = data.tellg() - 5
          &lt; 0 für zu kurze erste Zeilen
</code></pre>
<p>Ich denk mal, ios::pos_type ist unsigned, dann wird das ne schöne Zahl um die 4,3 Milliarden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1870125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1870125</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Tue, 16 Mar 2010 22:48:50 GMT</pubDate></item><item><title><![CDATA[Reply to tellg() position on Tue, 16 Mar 2010 23:22:38 GMT]]></title><description><![CDATA[<p>std::ios::pos_type löst sich um mehrere Ecken zu einer Spezialisierung der Klassenvorlage std::fpos auf. Diese muss Überladungen bereitstellen, um sich kompatibel zu std::streamsize, einem vorzeichenbehafteten Integertyp, zu verhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1870128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1870128</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Tue, 16 Mar 2010 23:22:38 GMT</pubDate></item><item><title><![CDATA[Reply to tellg() position on Tue, 16 Mar 2010 23:33:42 GMT]]></title><description><![CDATA[<p>Ja was soll ich sagen ich glaube ich kann mich net erklären.</p>
<p>Beim ersten tellg() schiesst der schon übers ziel (BOM) deswegen -5.</p>
<p>Eigentlich will ich nur die position jeden zeilenanfang einer datei speichern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1870133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1870133</guid><dc:creator><![CDATA[ismaild]]></dc:creator><pubDate>Tue, 16 Mar 2010 23:33:42 GMT</pubDate></item><item><title><![CDATA[Reply to tellg() position on Wed, 17 Mar 2010 00:36:01 GMT]]></title><description><![CDATA[<p>Warum machst du es nicht einfach so:</p>
<pre><code class="language-cpp">ifstream  data(&quot;test.txt&quot;); 
    int FileCharCount = 0;
    data.seekg(0, std::ios::end); 
    FileCharCount = data.tellg(); 
    data.seekg(0, std::ios::beg); 
    std::vector&lt;std::ios::pos_type&gt; line_points;    
    line_points.push_back( data.tellg() ); // Datei beginn =&gt; 1. Zeile
    while(getline(data,line)) 
    { 
        line_points.push_back( data.tellg() ); //Speichere anfang der nächsten Zeile
    }
    line_points.pop_back(); // Die letzte hinzugefügte zeile löschen (weil getline dann schon nichts mehr bekommen hat =&gt; Datei ende )
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1870141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1870141</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Wed, 17 Mar 2010 00:36:01 GMT</pubDate></item><item><title><![CDATA[Reply to tellg() position on Wed, 17 Mar 2010 10:03:39 GMT]]></title><description><![CDATA[<p>Warum keine do-while() Schleife? Damit erschlägt man auch sofort die Sonderfälle.</p>
<pre><code class="language-cpp">...
do
{
   line_points.push_back( data.tellg() );
}
while( getline( data,line ) );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1870221</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1870221</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 17 Mar 2010 10:03:39 GMT</pubDate></item><item><title><![CDATA[Reply to tellg() position on Wed, 17 Mar 2010 10:19:28 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p>Warum keine do-while() Schleife? Damit erschlägt man auch sofort die Sonderfälle.</p>
<pre><code class="language-cpp">...
do
{
   line_points.push_back( data.tellg() );
}
while( getline( data,line ) );
</code></pre>
</blockquote>
<p>Weil ich davon ausgegangen bin das er mit den Zeilen auch noch was anderes machen will da er da in seinem code ein '...' hatte.<br />
Ansonsten musst du da ein if einbauen.</p>
<pre><code class="language-cpp">if( !line_points.empty() )
</code></pre>
<p>oder so.<br />
wenn er nur die Zeilenanfänge haben will dann ist das besser. Das ist richtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1870227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1870227</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Wed, 17 Mar 2010 10:19:28 GMT</pubDate></item><item><title><![CDATA[Reply to tellg() position on Wed, 17 Mar 2010 11:33:22 GMT]]></title><description><![CDATA[<p>Ok habe mal folgendes gemacht<br />
dies ist der inhalt meiner Textdatei.</p>
<pre><code>Dies ist eine Beispielzeile
Dies ist die zweite Zeile
Dies ist die unendliche Zeile minus 1
</code></pre>
<p>Dies der code:</p>
<pre><code>ifstream  data(&quot;test.txt&quot;);
    int FileCharCount = 0;
std::ios::pos_type test;
    data.seekg(0, std::ios::end);
    FileCharCount = data.tellg();
    data.seekg(0, std::ios::beg);

    string line;
    while(getline(data,line))
    {
        test=data.tellg();

    }
</code></pre>
<p>Nachdem ersten tellg() habe ich in der VAriablen test 31 gehabt in wirklichkeit habe ich 27 Zeichen in der Zeile.<br />
Beim zweiten Tellg() 54 und beim dritten 95. Würde bedeuten ich habe einen VErsatz von drei Zeichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1870264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1870264</guid><dc:creator><![CDATA[ismaild]]></dc:creator><pubDate>Wed, 17 Mar 2010 11:33:22 GMT</pubDate></item><item><title><![CDATA[Reply to tellg() position on Wed, 17 Mar 2010 11:51:58 GMT]]></title><description><![CDATA[<p>Dir ist schon klar das der string keine \n und \r zeichen enthält oder?<br />
Die werden von getline schon entfernt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1870272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1870272</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Wed, 17 Mar 2010 11:51:58 GMT</pubDate></item><item><title><![CDATA[Reply to tellg() position on Wed, 17 Mar 2010 12:40:52 GMT]]></title><description><![CDATA[<p>Was heisst das jetzt ?</p>
<p>meinst Du tellg() berücksichtigt Sie und string nicht, deswegen der Versatz?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1870304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1870304</guid><dc:creator><![CDATA[ismaild]]></dc:creator><pubDate>Wed, 17 Mar 2010 12:40:52 GMT</pubDate></item><item><title><![CDATA[Reply to tellg() position on Wed, 17 Mar 2010 12:45:58 GMT]]></title><description><![CDATA[<p>Das heisst, dass getline() die komplette Zeile inklusive aller Umbrüche einliest, aber der resultierende string sie nicht enthält.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1870308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1870308</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 17 Mar 2010 12:45:58 GMT</pubDate></item><item><title><![CDATA[Reply to tellg() position on Wed, 17 Mar 2010 13:51:09 GMT]]></title><description><![CDATA[<p>So jetzt ist das Durcheinander komplett.</p>
<p>Ehrlich Leute besten Dank für Eure Mühen aber ich verstehe Momentan nur noch Bahnhof....</p>
<p>Wieso liest der die mit ein wenn der die eh löscht..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1870347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1870347</guid><dc:creator><![CDATA[ismaild]]></dc:creator><pubDate>Wed, 17 Mar 2010 13:51:09 GMT</pubDate></item><item><title><![CDATA[Reply to tellg() position on Wed, 17 Mar 2010 14:31:59 GMT]]></title><description><![CDATA[<p>ismaild schrieb:</p>
<blockquote>
<p>Wieso liest der die mit ein wenn der die eh löscht..</p>
</blockquote>
<p>Womöglich weil er das Zeilenende finden muss? Es heisst ja auch <code>getline</code> , also hole die Zeile, bzw. lese alles bis zum nächsten Zeilenumbruch. Wenn er nur vorausschauen würde ( <code>peek</code> ), ob ein Zeilenende kommt, dann müsstest du die Zeichen immer manuell entfernen, da er sonst danach immer eine leere Zeile sieht, da der Zeilenumbruch immer noch vor ihm liegt.</p>
<p>Wieso der zurückgegebene String den Zeilenumbruch nicht enthält, darüber kann man wohl streiten, aber in den meisten Fällen braucht man ihn nicht.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1870378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1870378</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 17 Mar 2010 14:31:59 GMT</pubDate></item><item><title><![CDATA[Reply to tellg() position on Fri, 19 Mar 2010 17:15:20 GMT]]></title><description><![CDATA[<p>vielen lieben dank ;o)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1871393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1871393</guid><dc:creator><![CDATA[ismaild]]></dc:creator><pubDate>Fri, 19 Mar 2010 17:15:20 GMT</pubDate></item></channel></rss>