<?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[Anfänger: Will Datei in Array einlesen]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe gerade meine ersten Erfahrungen in C++ hinter mir. Microsofts Visual C++ habe ich wieder an die Wand geknallt, weil ich damit nicht zurecht gekommen bin, obwohl ich vor Jahren mal intensiv mit Borlands Delphi gearbeitet habe. Dank Sprachen wie AutoIt (<a href="http://www.autoit.de" rel="nofollow">http://www.autoit.de</a>) sind mir grundsätzliche Begriffe vom Programmieren schon bekannt.<br />
Mir ist auch klar, dass man C++ nicht sofort kann, aber ich weiß nicht, was ich falsch mache, wenn ich über eine Stunde im Internet und hier im Forum Code suche, um ein Codebeispiel zu finden, dass mir Text aus einer Textdatei zeilenweise zurückliefert.</p>
<p>Meine Textdatei sieht wie folgt aus:</p>
<pre><code>; erste Zeile
#include &lt;file.au3&gt;

; Kommentar
MsgBox(0, &quot;Test&quot;, &quot;geht noch, trotz cleaing&quot;)
; noch ein Comment
#cs
Laaaaaanger
Kommmentar
von mir... Weg damit!
#ce

MsgBox(0, &quot;Test2&quot;, &quot;geht immmer noch, trotz cleaing!&quot;)
; letze Zeile
</code></pre>
<p>Die einzelne Zeile kann aber bis zu 4096 Zeichen lang sein.</p>
<p>Diese Datei will ich per Kommandozeile übergeben lassen (den Dateinamen bekommee ich schon korrekt, das passt also) und dann daran ein bisschen rumparsen (Kommentare entfernen und so).</p>
<p>Mein bisheriger Code sieht so aus:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;stdio.h&gt;
#include &lt;fstream&gt;

using namespace std;

char zeichen;

int main(int argc, char *argv[])
{

    // Vars
    int clean_type; 
    string dest_path;
    string lines[20000];
    string temp_line = &quot;&quot;;
    int line_nr;

    //int i;
    //for (i=0;i&lt;argc;i++)
    //printf(&quot; argv[%d]  %s\n&quot;, i, argv[i]);

    // Anzahl der Kommandozeilenparameter auswerten
    if (argc == 1)
    {
         cout &lt;&lt; &quot;Fehler: Keine Kommandozeilenparameter angegeben.&quot;;
         system(&quot;PAUSE&quot;);
         return -1;
    } else {
         // Parameter auswerten
         // Quelldateipfad         
         // Aufräumaufgaben
         if (argc == 3)
         {
            clean_type = (int)argv[2];
         }
         // Zielpfad
         if (argc == 4)
         {
            dest_path = argv[3];
         } else {
            dest_path = argv[1]; // + &quot;.tidy&quot;;    
         }

         // Datei öffnen und in Array einlesen
         long begin,end;
         ifstream work_file(argv[1]);         
         line_nr = 1;
         // Zeilen lesen und in Array tun

         while (!work_file.eof())
         {
               work_file.get(zeichen);
               if (zeichen != &quot;n&quot;)
               {
                  temp_line = temp_line + zeichen;            
               } else {
                  lines[line_nr] = temp_line;
                  line_nr++;
                  temp_line = &quot;&quot;;                      
               }
               cout &lt;&lt; zeichen;
         }

         work_file.close();        

         // Datei schreiben
         /*ofstream myfile;
         myfile.open (&quot;example.txt&quot;);
         myfile &lt;&lt; &quot;Writing this to a file.\n&quot;;
         myfile.close();
         return 0;*/         

         cout &lt;&lt; &quot;\n\n&quot;;         
         system(&quot;PAUSE&quot;);
         return EXIT_SUCCESS;
    }
}
</code></pre>
<p>Daran motzt mein Dev-C++ 4.9.9.2 aber kräftig rum:<br />
z.B.</p>
<blockquote>
<p>56 Y:\Programmieren\C_C++\Projekte\CleanScript\main.cpp ISO C++ forbids comparison between pointer and integer<br />
58 Y:\Programmieren\C_C++\Projekte\CleanScript\main.cpp `c_str' has not been declared<br />
58 Y:\Programmieren\C_C++\Projekte\CleanScript\main.cpp request for member of non-aggregate type before ';' token</p>
</blockquote>
<p>Für Hilfe wäre ich echt dankbar!</p>
<p>peethebee</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/155543/anfänger-will-datei-in-array-einlesen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 12:04:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/155543.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Aug 2006 11:30:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anfänger: Will Datei in Array einlesen on Mon, 07 Aug 2006 11:30:42 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe gerade meine ersten Erfahrungen in C++ hinter mir. Microsofts Visual C++ habe ich wieder an die Wand geknallt, weil ich damit nicht zurecht gekommen bin, obwohl ich vor Jahren mal intensiv mit Borlands Delphi gearbeitet habe. Dank Sprachen wie AutoIt (<a href="http://www.autoit.de" rel="nofollow">http://www.autoit.de</a>) sind mir grundsätzliche Begriffe vom Programmieren schon bekannt.<br />
Mir ist auch klar, dass man C++ nicht sofort kann, aber ich weiß nicht, was ich falsch mache, wenn ich über eine Stunde im Internet und hier im Forum Code suche, um ein Codebeispiel zu finden, dass mir Text aus einer Textdatei zeilenweise zurückliefert.</p>
<p>Meine Textdatei sieht wie folgt aus:</p>
<pre><code>; erste Zeile
#include &lt;file.au3&gt;

; Kommentar
MsgBox(0, &quot;Test&quot;, &quot;geht noch, trotz cleaing&quot;)
; noch ein Comment
#cs
Laaaaaanger
Kommmentar
von mir... Weg damit!
#ce

MsgBox(0, &quot;Test2&quot;, &quot;geht immmer noch, trotz cleaing!&quot;)
; letze Zeile
</code></pre>
<p>Die einzelne Zeile kann aber bis zu 4096 Zeichen lang sein.</p>
<p>Diese Datei will ich per Kommandozeile übergeben lassen (den Dateinamen bekommee ich schon korrekt, das passt also) und dann daran ein bisschen rumparsen (Kommentare entfernen und so).</p>
<p>Mein bisheriger Code sieht so aus:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;stdio.h&gt;
#include &lt;fstream&gt;

using namespace std;

char zeichen;

int main(int argc, char *argv[])
{

    // Vars
    int clean_type; 
    string dest_path;
    string lines[20000];
    string temp_line = &quot;&quot;;
    int line_nr;

    //int i;
    //for (i=0;i&lt;argc;i++)
    //printf(&quot; argv[%d]  %s\n&quot;, i, argv[i]);

    // Anzahl der Kommandozeilenparameter auswerten
    if (argc == 1)
    {
         cout &lt;&lt; &quot;Fehler: Keine Kommandozeilenparameter angegeben.&quot;;
         system(&quot;PAUSE&quot;);
         return -1;
    } else {
         // Parameter auswerten
         // Quelldateipfad         
         // Aufräumaufgaben
         if (argc == 3)
         {
            clean_type = (int)argv[2];
         }
         // Zielpfad
         if (argc == 4)
         {
            dest_path = argv[3];
         } else {
            dest_path = argv[1]; // + &quot;.tidy&quot;;    
         }

         // Datei öffnen und in Array einlesen
         long begin,end;
         ifstream work_file(argv[1]);         
         line_nr = 1;
         // Zeilen lesen und in Array tun

         while (!work_file.eof())
         {
               work_file.get(zeichen);
               if (zeichen != &quot;n&quot;)
               {
                  temp_line = temp_line + zeichen;            
               } else {
                  lines[line_nr] = temp_line;
                  line_nr++;
                  temp_line = &quot;&quot;;                      
               }
               cout &lt;&lt; zeichen;
         }

         work_file.close();        

         // Datei schreiben
         /*ofstream myfile;
         myfile.open (&quot;example.txt&quot;);
         myfile &lt;&lt; &quot;Writing this to a file.\n&quot;;
         myfile.close();
         return 0;*/         

         cout &lt;&lt; &quot;\n\n&quot;;         
         system(&quot;PAUSE&quot;);
         return EXIT_SUCCESS;
    }
}
</code></pre>
<p>Daran motzt mein Dev-C++ 4.9.9.2 aber kräftig rum:<br />
z.B.</p>
<blockquote>
<p>56 Y:\Programmieren\C_C++\Projekte\CleanScript\main.cpp ISO C++ forbids comparison between pointer and integer<br />
58 Y:\Programmieren\C_C++\Projekte\CleanScript\main.cpp `c_str' has not been declared<br />
58 Y:\Programmieren\C_C++\Projekte\CleanScript\main.cpp request for member of non-aggregate type before ';' token</p>
</blockquote>
<p>Für Hilfe wäre ich echt dankbar!</p>
<p>peethebee</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1112140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112140</guid><dc:creator><![CDATA[peethebee]]></dc:creator><pubDate>Mon, 07 Aug 2006 11:30:42 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Will Datei in Array einlesen on Mon, 07 Aug 2006 11:47:56 GMT]]></title><description><![CDATA[<p>Markier mal bitte die Stellen im code, bei denen die Fehlermeldungen kommen.</p>
<p>Das schonmal vorweg. Wenn du ein Zeichen prüfen willst, dann nicht so</p>
<pre><code class="language-cpp">zeichen != &quot;n&quot;
</code></pre>
<p>sondern so</p>
<pre><code class="language-cpp">zeichen != 'n'
</code></pre>
<p>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1112160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112160</guid><dc:creator><![CDATA[DarthZiu]]></dc:creator><pubDate>Mon, 07 Aug 2006 11:47:56 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Will Datei in Array einlesen on Mon, 07 Aug 2006 11:54:36 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe zwar nach &quot;\n&quot; suchen wollen (sonst macht es ja keinen Sinn, an allen Ns zu splitten <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="😉"
    /> ), aber dein Tipp war Gold wert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> .<br />
Leider finde ich so einfach Sachen bei C++ viel zu selten. Einfach traurig...<br />
Naj, egal, danke erst mal, wenn es wieder hakt, melde ich mich einfach wieder hier.</p>
<p>peethebee</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1112167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112167</guid><dc:creator><![CDATA[peethebee]]></dc:creator><pubDate>Mon, 07 Aug 2006 11:54:36 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Will Datei in Array einlesen on Mon, 07 Aug 2006 12:03:47 GMT]]></title><description><![CDATA[<p>peethebee schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;

// #include &lt;stdio.h&gt;
// heißt in C++
#include &lt;cstdio&gt;

#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;

using namespace std;

char zeichen; // warum global?

int main(int argc, char *argv[])
{
    int clean_type;
    string dest_path;
    string lines[20000];
    string temp_line = &quot;&quot;;
    int line_nr;
   
    // Anzahl der Kommandozeilenparameter auswerten
    if( argc == 1 ) {

        cout &lt;&lt; &quot;Fehler: Keine Kommandozeilenparameter angegeben.&quot; &lt;&lt; endl;
         
        // system( &quot;PAUSE&quot; ); ist nicht sonderlich elegant
        cin.clear( );
        cin.ignore( cin.rdbuf( )-&gt;in_avail( ) );
        cin.get( );

        // return -1; Main sollte entweder EXIT_FAILURE oder EXIT_SUCCESS zurückgeben:
        return EXIT_FAILURE;

    } else {
		
        // deine Auswertung der Argumente versteh ich nicht --&gt;

        if( argc == 3 ) {
			
            clean_type = ( int )argv[ 2 ]; // wofür!?
        }

        if( argc == 4 ) {
			
            dest_path = argv[ 3 ];
		
        } else {
			
            dest_path = argv[ 1 ];
        }

        // &lt;--
		
        long begin, end; // wofür? Du verwendest sie nie.
        
        ifstream work_file( argv[1] );
		
        line_nr = 1; // dir ist schon klar, dass C-Arrays bei Index [ 0 ] beginnen!?
         
        while ( !work_file.eof() ) {
			 
            work_file.get( zeichen );

            // if( zeichen != &quot;n&quot; )
            // du meinst wohl:
            if( zeichen != '\n' ) {
				 
                // temp_line = temp_line + zeichen;
                // kürzer:

                temp_line += zeichen;
			 
            } else {
				 
                lines[ line_nr ] = temp_line;
                line_nr++;
                temp_line = &quot;&quot;;
            }
            cout &lt;&lt; zeichen;
        }
         
        work_file.close();

        /*
        cout &lt;&lt; &quot;\n\n&quot;;
        system(&quot;PAUSE&quot;);
        return EXIT_SUCCESS;
		 
        wohl eher außerhalb des else-Zweigs
        */
    }

    cout &lt;&lt; endl &lt;&lt; endl;

    cin.clear( );
    cin.ignore( cin.rdbuf( )-&gt;in_avail( ) );
    cin.get( );

    return EXIT_SUCCESS;
}
</code></pre>
</blockquote>
<p>eher so:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;vector&gt;
#include &lt;fstream&gt;
#include &lt;iostream&gt;

using namespace std;

int main( int argc, char *argv[ ] )
{
    if( argc != 3 ) {

        cout &lt;&lt; &quot;usage: fooapp [input file] [output file]&quot; &lt;&lt; endl &lt;&lt; endl;
        return EXIT_FAILURE;
    }

    ifstream input( argv[ 1 ] );
    ofstream output( argv[ 2 ] );

    if( input.fail( ) ) {

        cout &lt;&lt; &quot;The input file \&quot;&quot; &lt;&lt; argv[ 1 ] &lt;&lt; &quot;\&quot; could not be opened!&quot; &lt;&lt; endl &lt;&lt; endl;
        return EXIT_FAILURE;
    }

    if( output.fail( ) ) {

        cout &lt;&lt; &quot;The output file \&quot;&quot; &lt;&lt; argv[ 2 ]  &lt;&lt; &quot;\&quot; could not be created!&quot; &lt;&lt; endl &lt;&lt; endl;
        return EXIT_FAILURE;
    }

    vector&lt; string &gt; input_data;
    string tmp;

    while( !input.eof( ) ) {

        getline( input, tmp, '\n' );
        input_data.push_back( tmp );

        cout &lt;&lt; input_data[ input_data.size( ) - 1 ] &lt;&lt; endl;
    }

    input.close( );
    output.close( );
}
</code></pre>
<p>Greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1112177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112177</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Mon, 07 Aug 2006 12:03:47 GMT</pubDate></item></channel></rss>