У нас есть три файла diffrenet .cpp.
когда я делаю файл в random.cpp
ofstream outfile ("random.log");
Затем я пишу в файл random.log в файле random.cpp:
outfile << " something" ;
Затем я перехожу к другому .cpp файлу, например StudentCS.cpp, где я открываю файл, используя:
ofstream outfile;
outfile.open("random.log",std::ios_base::app);
Он будет записывать все выходные данные StudentCS после всех выходных данных random.cpp, даже если я вызову StudentCS в середине random.cpp. Я пытаюсь записать из random.cpp, затем он вызывает StudentCS.cpp, который должен что-то записать, а затем обратно в random.cpp, который пишет снова
Откройте файл один раз, затем передайте объект потока вокруг. Или лучше: сделайте объект logger доступным для любого модуля, который нуждается в регистрации.
random.cpp
void studentCS(ofstream & outfile);
void random() {
ofstream outfile ("random.log");
outfile << " something" ;
outfile.close();
studentCS(outfile);
outfile.open("random.log",std::ios_base::app);
outfile << " something write after call to studenCS";
}
studentCS.cpp
void studentCS(ofstream & outfile) {
ofstream outfile("random.log",std::ios_base::app);
outfile << " something else ";
}
Но имейте в виду, что вы должны стараться избегать как можно больше операций открытия / закрытия, которые сильно загружают процессор.
Я вижу, что вы используете имя «random.log».
Означает ли это, что вы пишете файл журнала? Если это так, вы можете рассмотреть возможность использования одного из многих классов журналирования, разработанных для упрощения этого процесса (см. 1, 2, 3, 4, 5).
Еще одна мысль …
Вы открываете и закрываете свой файл в разных частях проекта. Другие ответы предлагали передать указатель файла. Но если вам действительно нужно записать в этот файл откуда угодно и принять надлежащие меры предосторожности, вы можете рассмотреть здесь использование глобальной переменной.