Ich habe ein kleines C++ - Problem, das ich nicht durch Online-Surfen lösen konnte. Hier ist mein Code (extrahiert):Wie kann ich zwischen fstream-Dateien wechseln, ohne sie zu schließen (Simultane Ausgabedateien) - C++
if(File.is_open()) {
while(!File.eof()) {
i++;
getline(File,Line);
if(i>=2) { //Skip Headers
int CharCount=0;
for(int CharPosition=0; CharPosition<Line.size(); CharPosition++) {
if(Line[CharPosition]==',') {
Length=CharPosition;
break;
}
}
NameText=Line.substr(0,Length);
Path= Path_Folder + "\\" + NameText + ".csv";
if(!CheckExistance(Path.c_str())) {
fstream Text_File;
}
Text_File.open(Path, fstream::in | fstream::out | fstream::app);
Text_File<<Line<<"\n";
Text_File.close();
}
}
}
Dieser Code funktioniert gut, aber ich möchte die Tatsache ändern, dass sie die Text_File
schließt jedes Mal in der while-Schleife geht.
Grundsätzlich teilt dieses Programm eine große Eingabedatei in viele kleinere Dateien auf. Da meine kleinere Dateien immer größer werden, wird die Ausführung langsamer und langsamer (normal). Mein Ziel ist es dann, alle kleineren Dateien (Text_File
) in diese while-Schleife zu lassen und nur den fstream-Zeiger (Zeiger?) Von einem auf anderen zu schalten.
ich versuchte, so zu ändern:
...
NameText=Line.substr(0,Length);
Path= Path_Folder + "\\" + NameText + ".csv";
if(!CheckExistance(Path.c_str())) {
fstream Text_File;
}
if(!Text_File.open()) {
Text_File.open(Path, fstream::in |fstream::out | fstream::app);
}
Text_File<<Line<<"\n";
\\Text_File.close();
...
Aber es funktioniert auf dem gleichen Text_File
egal was NameText
ist. Ich vermute also, dass sich der Zeiger des fstream Text_File
nicht ändert. Was muss ich dann sein? Den Zeiger ruhen lassen? Wie?
Vielen Dank, alle!
Nicht sicher, dass es relevant ist, aber ich arbeite mit Microsoft Visual C++ 2010 Express. Darüber hinaus bin ich kein Programmierer weder durch Bildung noch durch das Leben, also wenn Sie es ohne zu hoch entwickelte Wörter erklären können, werde ich schätzen.
Wie wäre es 'File' ein Array zu machen? – wallyk
Ich fühle mich wie ein Zeiger auf eine (oder jede) der bereits deklarierten 'Text_File' würde funktionieren –