<?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[[erledigt] wie an String Dateiendung anhängen]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe das Problem, das ich versuche mit + an einen String eine Dateiendung anzuhängen, diese dann jedoch am Anfang landet. Es folgt die Klasse und die eingelesene Datei.</p>
<p>main.cpp:</p>
<pre><code>#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &quot;FileAction.h&quot;
#include &quot;Lektion.h&quot;
#include &quot;Language.h&quot;
#include &lt;vector&gt;
int main(int argc, char** argv) {
    Language lec(&quot;/home/heckenschere/Vokabeln/Franc2&quot;); /* Erstellen einer Instanz der Klasse Language */
        return 0;
}
</code></pre>
<p>Language.h:</p>
<pre><code>class Language {
public:
    Language(std::string path);
    std::vector&lt;Lektion&gt; leks;  //std::vector für verschiedene Lektionen
private:

};
</code></pre>
<p>Language.cpp :</p>
<pre><code>#include &quot;Language.h&quot;
Language::Language(std::string path) {
    std::vector&lt;std::string&gt; lecArray= FileAction::fileToVector(path + &quot;/Lektionen.dat&quot;);   //Erstellen eines std::vectors mit einem zeilenweisen Dateiinhalt
    leks.resize(lecArray.size()-1);  //Vergrössern des std::vectors leks auf benötigte grösse
    for(int i=1; i&lt;lecArray.size(); i++){
            std::string stan= path+&quot;/&quot;+lecArray[i]+&quot;.dat&quot;;   //Erstellen des Dateinamens
            std::cout&lt;&lt;stan&lt;&lt;std::endl;  //Ausgabe
    }

}
</code></pre>
<p>Lektionen.dat:</p>
<pre><code>Speak it 2000-File

Lecon_02_01

Lecon_02_02
</code></pre>
<p>Ausgabe:</p>
<blockquote>
<p>.date/heckenschere/Vokabeln/Franc2/Lecon_02_01<br />
/home/heckenschere/Vokabeln/Franc2/Lecon_02_02.dat</p>
</blockquote>
<p>Seltsamerweise hängt er beim ersten String das .dat an den Anfang. Wie kann ich dafür sorgen, dass es auch am Ende landet?</p>
<p>Für alle Helfer: Danke im voraus.</p>
<p>Freundliche Grüsse<br />
deckungsgradkontro</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/291878/erledigt-wie-an-string-dateiendung-anhängen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 08:28:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/291878.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 29 Aug 2011 10:02:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [erledigt] wie an String Dateiendung anhängen on Mon, 29 Aug 2011 13:08:21 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe das Problem, das ich versuche mit + an einen String eine Dateiendung anzuhängen, diese dann jedoch am Anfang landet. Es folgt die Klasse und die eingelesene Datei.</p>
<p>main.cpp:</p>
<pre><code>#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &quot;FileAction.h&quot;
#include &quot;Lektion.h&quot;
#include &quot;Language.h&quot;
#include &lt;vector&gt;
int main(int argc, char** argv) {
    Language lec(&quot;/home/heckenschere/Vokabeln/Franc2&quot;); /* Erstellen einer Instanz der Klasse Language */
        return 0;
}
</code></pre>
<p>Language.h:</p>
<pre><code>class Language {
public:
    Language(std::string path);
    std::vector&lt;Lektion&gt; leks;  //std::vector für verschiedene Lektionen
private:

};
</code></pre>
<p>Language.cpp :</p>
<pre><code>#include &quot;Language.h&quot;
Language::Language(std::string path) {
    std::vector&lt;std::string&gt; lecArray= FileAction::fileToVector(path + &quot;/Lektionen.dat&quot;);   //Erstellen eines std::vectors mit einem zeilenweisen Dateiinhalt
    leks.resize(lecArray.size()-1);  //Vergrössern des std::vectors leks auf benötigte grösse
    for(int i=1; i&lt;lecArray.size(); i++){
            std::string stan= path+&quot;/&quot;+lecArray[i]+&quot;.dat&quot;;   //Erstellen des Dateinamens
            std::cout&lt;&lt;stan&lt;&lt;std::endl;  //Ausgabe
    }

}
</code></pre>
<p>Lektionen.dat:</p>
<pre><code>Speak it 2000-File

Lecon_02_01

Lecon_02_02
</code></pre>
<p>Ausgabe:</p>
<blockquote>
<p>.date/heckenschere/Vokabeln/Franc2/Lecon_02_01<br />
/home/heckenschere/Vokabeln/Franc2/Lecon_02_02.dat</p>
</blockquote>
<p>Seltsamerweise hängt er beim ersten String das .dat an den Anfang. Wie kann ich dafür sorgen, dass es auch am Ende landet?</p>
<p>Für alle Helfer: Danke im voraus.</p>
<p>Freundliche Grüsse<br />
deckungsgradkontro</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111944</guid><dc:creator><![CDATA[deckungsgradkontro]]></dc:creator><pubDate>Mon, 29 Aug 2011 13:08:21 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] wie an String Dateiendung anhängen on Mon, 29 Aug 2011 10:53:05 GMT]]></title><description><![CDATA[<p>Ich kann den Fehler in den gezeigten Teilen nicht finden. Aber das sieht mir teilweise recht wild aus, nicht nur von der Einrückung her. Dir scheint zum Beispiel nicht klar zu sein, dass das erste Element eines vectors den Index 0 hat.</p>
<p>Wenn ich deinen gezeigten Code zu etwas Compilierbarem ergänze:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;

class Language
{
public:
  Language(std::string path);
private:
};

Language::Language(std::string path) 
{
  std::vector&lt;std::string&gt; lecArray= {&quot;ABC&quot;, &quot;DEF&quot;, &quot;IJK&quot;};
  for(int i=1; i&lt;lecArray.size(); i++){
    std::string stan= path+&quot;/&quot;+lecArray[i]+&quot;.dat&quot;;   //Erstellen des Dateinamens
    std::cout&lt;&lt;stan&lt;&lt;std::endl;  //Ausgabe
  }   
}

int main(int argc, char** argv) {
  Language lec(&quot;/home/heckenschere/Vokabeln/Franc2&quot;); /* Erstellen einer Instanz der Klasse Language */
  return 0;
}
</code></pre>
<p>Dann kommt auch das raus, was ich von diesem Code erwarten würde:</p>
<pre><code>/home/heckenschere/Vokabeln/Franc2/DEF.dat
/home/heckenschere/Vokabeln/Franc2/IJK.dat
</code></pre>
<p>Der Fehler liegt vermutlich in den nicht gezeigten Teilen, als erster Verdacht würde ich mal sagen, dass fileToVector irgendwas komisches macht. Denk auch an die Leerzeilen in deiner Datei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111971</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 29 Aug 2011 10:53:05 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] wie an String Dateiendung anhängen on Mon, 29 Aug 2011 11:43:52 GMT]]></title><description><![CDATA[<p>Ich werde noch die restlichen Teile posten:</p>
<p>FileAction.h:</p>
<pre><code>#include &lt;string&gt;
#include &lt;fstream&gt;
#include &lt;iostream&gt;
#include &lt;vector&gt;
class FileAction {
public:
    FileAction();
    static std::vector&lt;std::string&gt; fileToVector(std::string path);
private:

};
</code></pre>
<p>FileAction.cpp :</p>
<pre><code>#include &quot;FileAction.h&quot;

FileAction::FileAction() {
}
std::vector&lt;std::string&gt; FileAction::fileToVector(std::string path){
    std::ifstream file;
    std::vector&lt;std::string&gt; returner;
    std::string text;
    file.open(path, std::ios::in);
    while(!file.eof())
        {

        text = ' ';
        getline(file, text);
        returner.push_back(text);
        }
    file.seekg(0);
    return returner;
}
</code></pre>
<p>normale Variante von Language.cpp (mit neuen Ausgaben)</p>
<pre><code>std::vector&lt;std::string&gt; lecArray= FileAction::fileToVector(path + &quot;/Lektionen.dat&quot;);   //Erstellen eines std::vectors mit einem zeilenweisen Dateiinhalt
    //std::vector&lt;std::string&gt; lecArray = {&quot;Halloechen&quot;, &quot;Jetzt&quot;, &quot;Ende&quot;};
    for(int i=0; i&lt;lecArray.size(); i++){  //Ausgabe zur Klarheit
        std::cout&lt;&lt;&quot;¬&quot;&lt;&lt;lecArray[i]&lt;&lt;&quot;|&quot;&lt;&lt;std::endl;
    }
    leks.resize(lecArray.size()-1);  //Vergrössern des std::vectors leks auf benötigte grösse

    for(int i=1; i&lt;lecArray.size(); i++){
            std::string stan= path+&quot;/&quot;+lecArray[i]+&quot;.dat&quot;;   //Erstellen des Dateinamens
            std::cout&lt;&lt;stan&lt;&lt;std::endl;  //Ausgabe
    }
</code></pre>
<p>Ausgabe:</p>
<blockquote>
<p>|Speak it 2000-File<br />
|Lecon_02_01<br />
¬Lecon_02_02|<br />
.date/heckenschere/Vokabeln/Franc2/Lecon_02_01<br />
/home/heckenschere/Vokabeln/Franc2/Lecon_02_02.dat</p>
</blockquote>
<p>abgeänderte Variante von Language.cpp (mit anderem Vector)</p>
<pre><code>std::vector&lt;std::string&gt; lecArray = {&quot;Halloechen&quot;, &quot;Jetzt&quot;, &quot;Ende&quot;};
    for(int i=0; i&lt;lecArray.size(); i++){
        std::cout&lt;&lt;&quot;¬&quot;&lt;&lt;lecArray[i]&lt;&lt;&quot;|&quot;&lt;&lt;std::endl;
    }
    leks.resize(lecArray.size()-1);  //Vergrössern des std::vectors leks auf benötigte grösse

    for(int i=1; i&lt;lecArray.size(); i++){
            std::string stan= path+&quot;/&quot;+lecArray[i]+&quot;.dat&quot;;   //Erstellen des Dateinamens
            std::cout&lt;&lt;stan&lt;&lt;std::endl;  //Ausgabe
    }
</code></pre>
<p>Ausgabe:</p>
<blockquote>
<p>¬Halloechen|<br />
¬Jetzt|<br />
¬Ende|<br />
/home/heckenschere/Vokabeln/Franc2/Jetzt.dat<br />
/home/heckenschere/Vokabeln/Franc2/Ende.dat</p>
</blockquote>
<p>Mit der Aenderung ist es korrekt.</p>
<p>Ich fange bei 1 mit zaehlen an, weil die erste Zeile (index 0) nichts sinnvolles enthält.</p>
<p>Vielleicht kann man jetzt das Problem sehen?</p>
<p>Es wäre sehr zuvorkommend, wenn mir jemand helfen würde.</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111994</guid><dc:creator><![CDATA[deckungsgradkontro]]></dc:creator><pubDate>Mon, 29 Aug 2011 11:43:52 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] wie an String Dateiendung anhängen on Mon, 29 Aug 2011 12:13:30 GMT]]></title><description><![CDATA[<p>Hehe, dein Dateieinlesen ist lustig. Woher kommt bloß immer dieser Anfängerfehler mit dem eof? Steht das in irgendeinem schlechten Lehrbuch so drin?</p>
<p>Aber außer dass es am Ende eine Leerzeile zu viel liest und einige unnötige Sachen macht, ist es nicht direkt falsch in dem Sinne, dass es den Fehler erklärt.</p>
<p>Bei mir tritt er auch nicht auf (ich habe noch das resize entfernt, da ich die Klasse Lektionen nicht habe, hat dies eventuell irgendwelche Nebeneffekte?):</p>
<pre><code>¬Speak it 2000-File|
¬|
¬Lecon_02_01|
¬|
¬Lecon_02_02|
¬|
.//.dat
.//Lecon_02_01.dat
.//.dat
.//Lecon_02_02.dat
.//.dat
</code></pre>
<p>Die ganze Ausgabe ist bei dir total durcheinander. Beachte die Stellung der '¬' und '|' bei dir und bei mir. Aber ich bin mit meinem Latein am Ende. Ich kann den Fehler nicht nachvollziehen. Und man kann's auch nicht wirklich auf einen kaputten Compiler schieben, deiner kann offensichtlich C++11 und sollte daher einigermaßen modern sein (welcher ist es denn?). Vielleicht irgendeine kaputte Konsole? Oder enthältst du uns noch was irgendetwas vor?</p>
<p>Das einzige was mir noch einfällt ist, das Ding mal durch einen Debugger zu schicken und zu gucken, wann welche Variablen welche Werte haben. Eigentlich tust du das schon mit deinen Ausgaben, aber irgendwas stimmt mit denen nicht. Wo ist zum Beispiel das führende '¬'? Hast du vielleicht irgendwelche unsichtbaren Escapesequenzen in deiner Datei die den Bildschirm oder einzelne Zeilen löschen? Erstell die Datei vielleicht noch einmal neu mit irgendeinem Beispieltext. Und zwar selber ein paar Testzeilen tippen, kein Copy&amp;Paste der alten Datei. Oder guck die alte Datei mal mit einem Hex-Editor an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112028</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 29 Aug 2011 12:13:30 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] wie an String Dateiendung anhängen on Mon, 29 Aug 2011 13:07:22 GMT]]></title><description><![CDATA[<blockquote>
<p>¬Speak-It 2000-File|<br />
¬Lecon_02_01|<br />
¬Lecon_02_01|<br />
/home/heckenschere/Vokabeln/Franc2/Lecon_02_01.dat<br />
/home/heckenschere/Vokabeln/Franc2/Lecon_02_01.dat</p>
</blockquote>
<p>Er spuckte es mir richtig aus, nachdem ich die Datei neu geschrieben hatte.<br />
Vielleicht liegt daran, dass die alte ursprünglich in ISO-8859-1 war, das Programm aber, glaube ich, in UTF-8, wie die neue Datei.</p>
<p>Vielen Dank für die Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112064</guid><dc:creator><![CDATA[deckungsgradkontro]]></dc:creator><pubDate>Mon, 29 Aug 2011 13:07:22 GMT</pubDate></item><item><title><![CDATA[Reply to [erledigt] wie an String Dateiendung anhängen on Tue, 30 Aug 2011 15:10:13 GMT]]></title><description><![CDATA[<p>Für alle die es zu diesem Thema interessiert.</p>
<p>Die restlichen Dateien habe ich mit folgenden Befehl umgewandelt( wegen Umlauten)(unter Ubuntu 11.04)</p>
<pre><code>cd &lt;Ordner&gt;

recode utf-8..iso-8859-1 *.dat
</code></pre>
<p>Nur so als Hinweis.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2112573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2112573</guid><dc:creator><![CDATA[deckungsgradkontro]]></dc:creator><pubDate>Tue, 30 Aug 2011 15:10:13 GMT</pubDate></item></channel></rss>