У меня есть небольшая проблема на C++, которую я не мог решить, просматривая онлайн. Вот мой код (извлеченный):Как я могу переключаться между файлами fstream без их закрытия (одновременные выходные файлы) - 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();
}
}
}
Этот код работает отлично, но я хотел бы изменить тот факт, что она закрывает Text_File
каждый раз, когда он идет в то время цикла.
В принципе, эта программа разбивает большой входной файл на множество небольших файлов. Поскольку мои меньшие файлы размером становятся все больше и больше, выполнение выполняется медленнее и медленнее (обычный). Моя цель состоит в том, чтобы все мелкие файлы (Text_File
) открылись в этом цикле while и просто переключили указатель на указатель (указатель?) От одного до другого.
Я попытался изменить как:
...
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();
...
Но это не работает на том же Text_File
независимо от того, что NameText
есть. Поэтому я предполагаю, что указатель fstream Text_File
не изменяется. Что мне нужно тогда? Поставить указатель? Как?
Спасибо, все!
Не уверен, что это актуально, но я работаю с Microsoft Visual C++ 2010 Express. Кроме того, я не программист ни по образованию, ни по жизни, поэтому, если вы можете объяснить это без слишком сложных слов, я буду признателен.
Как о создании 'File' массив? – wallyk
Я чувствую, что указатель на один (или каждый) из уже объявленных 'Text_File' будет работать –