<?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[5 oder mehr dateien in eine schreiben, aber mit abfrage der .....]]></title><description><![CDATA[<p>einzulesenden dateien.</p>
<p>Hallo,</p>
<p>ich hab schon lang kein c++ mehr programmiert und bin ein bischen eingerostet.</p>
<p>Ich müsste ein Programm schreiben, dass mehrere Dateien einliest.</p>
<p>z.B: sind unsere daten immer mit datum durchnummeriert. zb:heute 061906dv.dat.</p>
<p>ich sollte nun eine ein wochendatei, eine zwei, drei und vier wochendatei machen.</p>
<p>welchen befehle benötige ich oder aber wie muss ich das schreiben, dass mein kollege eingibt zb für die 2 wochendatei : 070106dv.dat bis 210106dv.dat und das programm nur diese daten einliest und aus diesen eine macht.<br />
fürs anhängen werd ich ios_app brauchen, aber was brauch ich fürs einlesen mit der eingabe?<br />
Bitte helft mir!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/133642/5-oder-mehr-dateien-in-eine-schreiben-aber-mit-abfrage-der</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 11:36:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/133642.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 19 Jan 2006 14:27:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 5 oder mehr dateien in eine schreiben, aber mit abfrage der ..... on Thu, 19 Jan 2006 14:27:36 GMT]]></title><description><![CDATA[<p>einzulesenden dateien.</p>
<p>Hallo,</p>
<p>ich hab schon lang kein c++ mehr programmiert und bin ein bischen eingerostet.</p>
<p>Ich müsste ein Programm schreiben, dass mehrere Dateien einliest.</p>
<p>z.B: sind unsere daten immer mit datum durchnummeriert. zb:heute 061906dv.dat.</p>
<p>ich sollte nun eine ein wochendatei, eine zwei, drei und vier wochendatei machen.</p>
<p>welchen befehle benötige ich oder aber wie muss ich das schreiben, dass mein kollege eingibt zb für die 2 wochendatei : 070106dv.dat bis 210106dv.dat und das programm nur diese daten einliest und aus diesen eine macht.<br />
fürs anhängen werd ich ios_app brauchen, aber was brauch ich fürs einlesen mit der eingabe?<br />
Bitte helft mir!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/970612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/970612</guid><dc:creator><![CDATA[urkman]]></dc:creator><pubDate>Thu, 19 Jan 2006 14:27:36 GMT</pubDate></item><item><title><![CDATA[Reply to 5 oder mehr dateien in eine schreiben, aber mit abfrage der ..... on Fri, 20 Jan 2006 07:32:59 GMT]]></title><description><![CDATA[<p>Du mußt die Dateien eine nach der anderen öffnen, einlesen und dann hintereinander rausschreiben:</p>
<pre><code class="language-cpp">vector&lt;string&gt; namen;// dort alle Dateinamen eintragen
ifstream fin;
ofstream fout(&quot;Woche.dat&quot;);
for(int i=0;i&lt;namen.size();++i)
{
  fin.open(namen[i].c_str());
  //kopiere fin nach fout
  fin.close();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/971033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/971033</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 20 Jan 2006 07:32:59 GMT</pubDate></item><item><title><![CDATA[Reply to 5 oder mehr dateien in eine schreiben, aber mit abfrage der ..... on Fri, 20 Jan 2006 07:48:43 GMT]]></title><description><![CDATA[<p>cool.<br />
aber kann ich auch ne eingabe programmieren, wo mein kollege die anfangsdatei (z.B 1.dat) und die enddatei (7.dat) reintippen kann und das programm alle dazwischen miteinliest?</p>
<p>Das könnte man zwar in ner for schleifen einfach hochzählen lassen, aber wie oben beschrieben, zählen sich meine dateien</p>
<p>200106dv.dat<br />
210106dv.dat<br />
220106dv.dat</p>
<p>so nach oben. datumsmäßig.</p>
<p>wie soll ich denn das machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/971044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/971044</guid><dc:creator><![CDATA[urkman]]></dc:creator><pubDate>Fri, 20 Jan 2006 07:48:43 GMT</pubDate></item><item><title><![CDATA[Reply to 5 oder mehr dateien in eine schreiben, aber mit abfrage der ..... on Fri, 20 Jan 2006 07:57:30 GMT]]></title><description><![CDATA[<p>Wenn du weißt, wie sich deine Namen zusammensetzen, geht das sicher, dort einen Bereich festzulegen. In deinem Beispiel sieht es so aus, als ob du dort Datumsbereiche verwendest, da könnten die Funkionen aus der &lt;ctime&gt; weiterhelfen. (z.B. könntest du das Start- und Endedatum in einer struct_tm unterbringen und mit strftime() daraus deine Dateinamen erzeugen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/971047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/971047</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 20 Jan 2006 07:57:30 GMT</pubDate></item><item><title><![CDATA[Reply to 5 oder mehr dateien in eine schreiben, aber mit abfrage der ..... on Fri, 20 Jan 2006 10:35:46 GMT]]></title><description><![CDATA[<p>yo, das hört sich gut an.</p>
<p>ich werd ab montag mal anfangen.</p>
<p>wenn ich nich weiterweiß, kann ich ja posten und mit deiner hilfe rechnen ,oder?</p>
<p>Bittebitte...</p>
<p>Mfg<br />
und schönes we</p>
]]></description><link>https://www.c-plusplus.net/forum/post/971188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/971188</guid><dc:creator><![CDATA[urkman]]></dc:creator><pubDate>Fri, 20 Jan 2006 10:35:46 GMT</pubDate></item><item><title><![CDATA[Reply to 5 oder mehr dateien in eine schreiben, aber mit abfrage der ..... on Fri, 20 Jan 2006 20:12:00 GMT]]></title><description><![CDATA[<p>urkman schrieb:</p>
<blockquote>
<p>welchen befehle benötige ich oder aber wie muss ich das schreiben, dass mein kollege eingibt zb für die 2 wochendatei : 070106dv.dat bis 210106dv.dat und das programm nur diese daten einliest und aus diesen eine macht.</p>
</blockquote>
<p>Mal angenommen, da wäre ein Klasse Datum, die man hochzählen und vergleichen kann und von der man den passenden Datum-Sting bekommt, um den Dateinamen zu erzeugen. Dann könnte eine Funktion, die alle Dateien in eine steckt etwa so aussehen:</p>
<pre><code class="language-cpp">void merge_files( Datum dat, const Datum&amp; bis, const std::string&amp; zielname )
{
    std::ofstream ziel( zielname.c_str() );
    ziel.exceptions( std::ios_base::failbit );  // Ex bei Fehler
    for( ; dat &lt;= bis; ++dat )
    {
        const std::string dateiname = dat.str() + &quot;dv.dat&quot;; // Format &quot;TTMMJJdv.dat&quot;
        std::ifstream in( dateiname.c_str() );
        if( !in.is_open() )
        {
            std::cerr &lt;&lt; dateiname &lt;&lt; &quot; nicht gefunden&quot; &lt;&lt; std::endl;
            continue;
        }
        ziel &lt;&lt; in.rdbuf(); // Datei kopieren
        std::cout &lt;&lt; dateiname &lt;&lt; &quot; hinzugefuegt&quot; &lt;&lt; std::endl;
    }
    std::cout &lt;&lt; &quot;Ziel: &quot; &lt;&lt; zielname &lt;&lt; std::endl;
}
</code></pre>
<p>das sieht so kompliziert nciht aus - oder? Bleibt also noch Datum. Wir brauchen:<br />
- einen Konstruktor, der aus dem Text &quot;TTMMJJ&quot; ein 'Datum' macht<br />
- einen Vergleichsoperator<br />
- einen operator++ um zum nächsten Tag zu kommen<br />
- eine Methode str() um den Datums-String zu generieren</p>
<pre><code class="language-cpp">// --   zum Herausholen der einzelnen int's aus dem String
int substring_to_int( const std::string&amp; txt, unsigned off, unsigned len )
{
    int x;
    std::stringstream strm( txt.substr( off, len ) );
    if( (strm &gt;&gt; x).fail() || !strm.eof() )
        throw std::runtime_error( &quot;Text enthält keine Zahl&quot; );
    return x;
}

struct Datum
{
    // --   'txt' enthält das Datum im Format &quot;TTMMJJ&quot;
    explicit Datum( const char* txt )
        : m_jahr( substring_to_int( txt, 4, 2 ) )
        , m_monat( substring_to_int( txt, 2, 2 ) )
        , m_tag( substring_to_int( txt, 0, 2 ) )
    {
        if( m_monat &lt; 1 || m_monat &gt; 12 )
            throw std::runtime_error( &quot;Monat liegt ausserhalb des Intervalls [1,12]&quot; );
        if( m_tag &lt; 1 || m_tag &gt; max_tage() )
            throw std::runtime_error( &quot;der Tag ist &lt;1 oder groesser als die Anzahl der Tage in diesem Monat&quot; );
    }

    // --   zum nächsten Tag
    Datum&amp; operator++() 
    {   
        if( ++m_tag &gt; max_tage() )
        {
            m_tag = 1;
            if( ++m_monat &gt; 12 )
            {
                m_monat = 1; // Januar
                ++m_jahr;
            }
        }
        return *this;
    }

    // --   liefert das Datum im Format &quot;TTMMJJ&quot;
    std::string str() const
    {
        using namespace std;
        stringstream txt;
        txt &lt;&lt; setfill( '0' ) &lt;&lt; setw( 2 ) &lt;&lt; m_tag
            &lt;&lt; setw( 2 ) &lt;&lt; m_monat &lt;&lt; setw( 2 ) &lt;&lt; m_jahr;
        return txt.str();
    }

    bool operator&lt;( const Datum&amp; b ) const
    {
        return std::make_pair( m_jahr, std::make_pair( m_monat, m_tag) )
            &lt; std::make_pair( b.m_jahr, std::make_pair( b.m_monat, b.m_tag) );
    }

    // --   liefert die max. Anzahl von Tagen für den akt. Monat (und Jahr)
    int max_tage() const
    {
        // ggf. assert( m_monat &gt;= 1 &amp;&amp; m_monat &lt;= 12 );
        const int n_tage[12] =
            { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };        
        if( m_monat == 2 &amp;&amp; m_jahr % 4 == 0 )
            return 29;  // 29. Februar
        return n_tage[ m_monat - 1 ];
    }
private:
    int m_jahr;
    int m_monat;
    int m_tag;
};
bool operator&lt;=( const Datum&amp; a, const Datum&amp; b )
{
    return !( b &lt; a );
}
</code></pre>
<p>.. dann brauch es doch nur noch ein main:</p>
<pre><code class="language-cpp">int main( int argc, char* argv[] )
{
    try
    {
        if( argc != 3 )
        {
            std::cout &lt;&lt; &quot;2 Parameter angeben &quot; &lt;&lt; std::endl;
            return -1;
        }
        merge_files( Datum( argv[1] ), Datum( argv[2] ), ziel_datei( argv[1], argv[2] ) );
        return 0;
    }
    catch( const std::exception&amp; err )
    {
        std::cerr &lt;&lt; &quot;Fehler: &quot; &lt;&lt; err.what() &lt;&lt; std::endl;
    }
    return -1;
}
</code></pre>
<p>Wobei Du Dir noch Gedanken machen darfst, wie der Name der Ziel-Datei generiert wird.</p>
<pre><code class="language-cpp">std::string ziel_datei( const char* von, const char* bis )
{
    return std::string( von ) + &quot;_&quot; + std::string( bis ) + &quot;.dat&quot;;
}
</code></pre>
<p>Folgende Includes sind notwendig, damit alles compiliert</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;iomanip&gt;  // setfill, setw
#include &lt;sstream&gt;
#include &lt;utility&gt;  // make_pair
</code></pre>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/971709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/971709</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 20 Jan 2006 20:12:00 GMT</pubDate></item><item><title><![CDATA[Reply to 5 oder mehr dateien in eine schreiben, aber mit abfrage der ..... on Wed, 25 Jan 2006 08:21:00 GMT]]></title><description><![CDATA[<p>wow, danke!. ich klemm mich ab morgen dahinter und eld mich dann.</p>
<p>1000 Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/975586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/975586</guid><dc:creator><![CDATA[urkman]]></dc:creator><pubDate>Wed, 25 Jan 2006 08:21:00 GMT</pubDate></item></channel></rss>