Kmitska hat geschrieben:Hallo!
Erstelle gerade eine Funktion, die paar Sachen zum Text einfügen soll und dabei neue Zeile anfangen soll.
Code: Alles auswählen
void YSet(char FileName[], char ValueName[], char Value[])
{
using namespace std;
int lines;
string line;
string content;
stringstream ss;
line += ValueName;
line += "=";
line += Value;
ifstream file(FileName);
char *FileContent = new char[100];
while(!file.eof())
{
lines ++;
file.getline(FileContent, 200);
ss << FileContent;
ss >> content;
}
if(lines != 0) { content += "\n"; }
content += line;
ofstream File(FileName);
File << content;
File.close();
delete FileContent;
}
Der Code funktioniert wenn ich "content += "\n";" weglasse, aber dann steht alles in einer Zeile.
Wenn ich "\n" einfüge wird im *.txt eine Zeile frei gelassen und 2. Zeile das gegebene geschrieben und sonst nichts mehr (also keine weiteren inputs)
Würde mich freuen, wenn du ab und an mal
das hier lesen würdest.
Was soll der Code denn jetzt genau machen, was macht er zurzeit, was ist das Problem?
Funktion, die paar Sachen zum Text einfügen soll und dabei neue Zeile anfangen soll.
Schön, was für "paar Sachen"? Dein ValueName und Value?
Der Code funktioniert wenn ich "content += "\n";" weglasse, aber dann steht alles in einer Zeile.
Dann würde ich mir diese Stelle mal genauer anschauen. Du hast vorher die Abfrage: "lines != 0". Leider hast du lines nur initialisiert, nie deklariert. Du rechnest ständig, im while-loop, +1 auf diese Unbekannte Zahl, und anschließend überprüfst du, ob sie ungleich Null ist. Die Chancen stehen hoch. Schau dir doch bitte deine Compiler-
Warnings auch an.
Also wird "content += "\n";" immer aufgerufen, ganz egal, ob es gebraucht wird oder nicht. An dem Befehl selbst sehe ich nichts falsches.
Außerdem, du reservierst 100 Byte für FileCOntent, willst aber
bis zu 200 Byte auslesen. Das kann doch nur schief gehen.
Mir fällt gerade sonst nicht viel auf, das liegt aber auch daran, dass ich mich mit C++ Filestreams sowie C++ Strings nie auseinander gesetzt habe. Bin dort ziemlich Retro und ich muss zugeben, zurückgeblieben, in der C-Syntax.