<?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[Datei einlesen]]></title><description><![CDATA[<p>Ich hätte da mal eine Frage.<br />
Ich lese eine Datei ein in der z.B. steht</p>
<pre><code>Username:Password
</code></pre>
<p>. Dann trennt mein Code Username und Passwort (: ist das Trennzeichen).<br />
Dabei benutze ich <strong>string::iterator</strong> und springe damit sozusagen zum <strong>:</strong>. Wie kann ich es machen wenn z.B. meine Datei so aussieht</p>
<pre><code>Usernmae:Password:Age
</code></pre>
<p>, ich zum zweiten Doppelpunkt gelange?<br />
Hier mal der Code vielleicht versteht man die Frage dann besser. <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>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;conio.h&gt;

using namespace std;

int main(){
    fstream p_shadow;
    p_shadow.open(&quot;shadow.txt&quot;, ios::in);
    string shadow = &quot;&quot;;
        if(!p_shadow){
            cout &lt;&lt; &quot;Diese Datei exestiert nicht!&quot;;
            getch();
            return 0;
        }
        else{
            while (!p_shadow.eof()){
                getline(p_shadow, shadow);
            }
        }
    p_shadow.close();
//ab hier
    int double_point=shadow.find(&quot;:&quot;);
    string::iterator pointer=shadow.begin();
    cout &lt;&lt; &quot;Username: &quot;;
        for(int i=0;i&lt;double_point;i++, pointer++){
            cout &lt;&lt; *pointer;
        }
    cout &lt;&lt; &quot;\n\nPassword: &quot;;
        for(++pointer;pointer!=shadow.end();pointer++){
            cout &lt;&lt; *pointer;
        }
    getch();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/326130/datei-einlesen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Jul 2026 09:30:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/326130.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 03 Jun 2014 11:19:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datei einlesen on Tue, 03 Jun 2014 11:19:39 GMT]]></title><description><![CDATA[<p>Ich hätte da mal eine Frage.<br />
Ich lese eine Datei ein in der z.B. steht</p>
<pre><code>Username:Password
</code></pre>
<p>. Dann trennt mein Code Username und Passwort (: ist das Trennzeichen).<br />
Dabei benutze ich <strong>string::iterator</strong> und springe damit sozusagen zum <strong>:</strong>. Wie kann ich es machen wenn z.B. meine Datei so aussieht</p>
<pre><code>Usernmae:Password:Age
</code></pre>
<p>, ich zum zweiten Doppelpunkt gelange?<br />
Hier mal der Code vielleicht versteht man die Frage dann besser. <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>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;conio.h&gt;

using namespace std;

int main(){
    fstream p_shadow;
    p_shadow.open(&quot;shadow.txt&quot;, ios::in);
    string shadow = &quot;&quot;;
        if(!p_shadow){
            cout &lt;&lt; &quot;Diese Datei exestiert nicht!&quot;;
            getch();
            return 0;
        }
        else{
            while (!p_shadow.eof()){
                getline(p_shadow, shadow);
            }
        }
    p_shadow.close();
//ab hier
    int double_point=shadow.find(&quot;:&quot;);
    string::iterator pointer=shadow.begin();
    cout &lt;&lt; &quot;Username: &quot;;
        for(int i=0;i&lt;double_point;i++, pointer++){
            cout &lt;&lt; *pointer;
        }
    cout &lt;&lt; &quot;\n\nPassword: &quot;;
        for(++pointer;pointer!=shadow.end();pointer++){
            cout &lt;&lt; *pointer;
        }
    getch();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2402169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2402169</guid><dc:creator><![CDATA[Fensterscheibe]]></dc:creator><pubDate>Tue, 03 Jun 2014 11:19:39 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Tue, 03 Jun 2014 11:31:42 GMT]]></title><description><![CDATA[<p>Du kannst std::getline ein Trennzeichen mitgeben, bei dem es stoppen soll. Bei dir bietet sich ':' als Delimiter an.</p>
<pre><code class="language-cpp">std::istringstream is(&quot;Username:Password:Age\nUsername2:Password2:Age2&quot;);
for (std::string username, passwd, age; getline(getline(getline(is, username, ':'), passwd, ':'), age);) {
  std::cout &lt;&lt; &quot;username: &quot; &lt;&lt; username &lt;&lt; '\n'
            &lt;&lt; &quot;passwd  : &quot; &lt;&lt; passwd   &lt;&lt; '\n'
            &lt;&lt; &quot;age     : &quot; &lt;&lt; age      &lt;&lt; '\n';
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2402170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2402170</guid><dc:creator><![CDATA[forloop]]></dc:creator><pubDate>Tue, 03 Jun 2014 11:31:42 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 11 Jun 2014 22:00:52 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2402171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2402171</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Wed, 11 Jun 2014 22:00:52 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Tue, 03 Jun 2014 11:53:35 GMT]]></title><description><![CDATA[<p>Danke für die Mühe erstmal!<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8250">@Swordfish</a>: nur leider vestehe ich von deinem Code so gut wie gar nichts.<br />
Z.B. habe ich noch nie mit einem <strong>friend Element</strong> zutun gehabt, oder so einem krassen (für mich :P) <strong>struct</strong>. Ist das von <strong>forloop</strong> nicht in etwas das gleiche?</p>
<p>forloop schrieb:</p>
<blockquote>
<p>Du kannst std::getline ein Trennzeichen mitgeben, bei dem es stoppen soll. Bei dir bietet sich ':' als Delimiter an.</p>
<pre><code>std::istringstream is(&quot;Username:Password:Age\nUsername2:Password2:Age2&quot;);
for (std::string username, passwd, age; getline(getline(getline(is, username, ':'), passwd, ':'), age);) {
  std::cout &lt;&lt; &quot;username: &quot; &lt;&lt; username &lt;&lt; '\n'
            &lt;&lt; &quot;passwd  : &quot; &lt;&lt; passwd   &lt;&lt; '\n'
            &lt;&lt; &quot;age     : &quot; &lt;&lt; age      &lt;&lt; '\n';
}
</code></pre>
</blockquote>
<p>Es wäre sehr hilfreich wenn du mir die ersten 2 Zeilen erklären könntest. <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/2402172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2402172</guid><dc:creator><![CDATA[Fensterscheibe]]></dc:creator><pubDate>Tue, 03 Jun 2014 11:53:35 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Tue, 03 Jun 2014 11:55:58 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<pre><code class="language-cpp">std::istream &amp; operator&gt;&gt;( std::istream &amp; is, user_t &amp; user )
{
	is.imbue( std::locale( is.getloc(), new colon_is_space_t ) );
	is &gt;&gt; user.name &gt;&gt; user.pass &gt;&gt; user.age;
	return is;
}
</code></pre>
</blockquote>
<p>lol.<br />
Wenn du es kompliziert machen willst, dann doch bitte richtig. Und zwar in dem du die aktuelle locale des istreams berücksichtigst und nachher wiederherstellst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2402173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2402173</guid><dc:creator><![CDATA[nerdfish]]></dc:creator><pubDate>Tue, 03 Jun 2014 11:55:58 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Tue, 03 Jun 2014 12:07:05 GMT]]></title><description><![CDATA[<p>Fensterscheibe schrieb:</p>
<blockquote>
<p>forloop schrieb:</p>
<blockquote>
<p>Du kannst std::getline ein Trennzeichen mitgeben, bei dem es stoppen soll. Bei dir bietet sich ':' als Delimiter an.</p>
<pre><code>std::istringstream is(&quot;Username:Password:Age\nUsername2:Password2:Age2&quot;);
for (std::string username, passwd, age; getline(getline(getline(is, username, ':'), passwd, ':'), age);) {
  std::cout &lt;&lt; &quot;username: &quot; &lt;&lt; username &lt;&lt; '\n'
            &lt;&lt; &quot;passwd  : &quot; &lt;&lt; passwd   &lt;&lt; '\n'
            &lt;&lt; &quot;age     : &quot; &lt;&lt; age      &lt;&lt; '\n';
}
</code></pre>
</blockquote>
<p>Es wäre sehr hilfreich wenn du mir die ersten 2 Zeilen erklären könntest. <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>
</blockquote>
<p>Du könntest auch schreiben</p>
<pre><code class="language-cpp">std::ifstream input( &quot;shadow.txt&quot; ); // std::istringstream liest von einem string, ifstream von einer Datei.
std::string username, passwd, age; // Das sind die Variablen, die eingelesen werden
while (getline(input, username, ':') &amp;&amp; // getline(...) ist true, wenn das Lesen erfolgreich war
       getline(input, passwd, ':') &amp;&amp;   // Es ist guter Stil, das immer so zu 
       getline(input, age, ':')) {      // überprüfen.  So werden auch andere Lesefehler
                                        // wie eof() behandelt.
  std::cout &lt;&lt; &quot;username: &quot; &lt;&lt; username &lt;&lt; '\n'
            &lt;&lt; &quot;passwd  : &quot; &lt;&lt; passwd   &lt;&lt; '\n'
            &lt;&lt; &quot;age     : &quot; &lt;&lt; age      &lt;&lt; '\n';
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2402174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2402174</guid><dc:creator><![CDATA[forloop]]></dc:creator><pubDate>Tue, 03 Jun 2014 12:07:05 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Tue, 03 Jun 2014 12:24:24 GMT]]></title><description><![CDATA[<p>Du kannst es auch auf Deine Weise machen:</p>
<pre><code>int double_point=shadow.find(&quot;:&quot;);
</code></pre>
<p>findet den ersten Doppelpunkt.</p>
<pre><code>double_point=shadow.find(&quot;:&quot;, double_point + 1);
</code></pre>
<p>findet den nächsten,</p>
<pre><code>double_point=shadow.find(&quot;:&quot;, double_point + 1);
</code></pre>
<p>den dritten usw.<br />
Du solltest Dich nur darum kümmern, ob wirklich (noch) einer gefunden wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2402177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2402177</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 03 Jun 2014 12:24:24 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Tue, 03 Jun 2014 12:58:56 GMT]]></title><description><![CDATA[<p>forloop schrieb:</p>
<blockquote>
<p>Du könntest auch schreiben</p>
<pre><code class="language-cpp">std::ifstream input( &quot;shadow.txt&quot; ); // std::istringstream liest von einem string, ifstream von einer Datei.
std::string username, passwd, age; // Das sind die Variablen, die eingelesen werden
while (getline(input, username, ':') &amp;&amp; // getline(...) ist true, wenn das Lesen erfolgreich war
       getline(input, passwd, ':') &amp;&amp;   // Es ist guter Stil, das immer so zu 
       getline(input, age, ':')) {      // überprüfen.  So werden auch andere Lesefehler
                                        // wie eof() behandelt.
  std::cout &lt;&lt; &quot;username: &quot; &lt;&lt; username &lt;&lt; '\n'
            &lt;&lt; &quot;passwd  : &quot; &lt;&lt; passwd   &lt;&lt; '\n'
            &lt;&lt; &quot;age     : &quot; &lt;&lt; age      &lt;&lt; '\n';
}
</code></pre>
</blockquote>
<p>Gut das verstehe ich soweit.<br />
Nur mich verwirrt immer noch die ersten Zeile warum nicht einfach mit:</p>
<pre><code>fstream p_shadow;
p_shadow.open(&quot;shadow.txt&quot;, ios::in);
p_shadow.close();
</code></pre>
<p>Oder sagt man damit schon das er lesen soll und man braucht keine extra Schleife mehr?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2402190</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2402190</guid><dc:creator><![CDATA[Fensterscheibe]]></dc:creator><pubDate>Tue, 03 Jun 2014 12:58:56 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Tue, 03 Jun 2014 12:59:54 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>Du kannst es auch auf Deine Weise machen:</p>
<pre><code>int double_point=shadow.find(&quot;:&quot;);
</code></pre>
<p>findet den ersten Doppelpunkt.</p>
<pre><code>double_point=shadow.find(&quot;:&quot;, double_point + 1);
</code></pre>
<p>findet den nächsten,</p>
<pre><code>double_point=shadow.find(&quot;:&quot;, double_point + 1);
</code></pre>
<p>den dritten usw.<br />
Du solltest Dich nur darum kümmern, ob wirklich (noch) einer gefunden wurde.</p>
</blockquote>
<p>Oh Super danke! <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/2402191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2402191</guid><dc:creator><![CDATA[Fensterscheibe]]></dc:creator><pubDate>Tue, 03 Jun 2014 12:59:54 GMT</pubDate></item><item><title><![CDATA[Reply to Datei einlesen on Wed, 11 Jun 2014 22:04:42 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2402208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2402208</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Wed, 11 Jun 2014 22:04:42 GMT</pubDate></item></channel></rss>