2012-11-22 5 views
0

세 개의 diffrenet .cpp 파일이 있습니다. 내가C++ - 다른 cpp 파일의 출력 파일에 쓰기

ofstream outfile ("random.log"); 

그런 다음 나는 random.cpp 파일의 파일 random.log에 기록 random.cpp에서 파일을 만들 때

outfile << " something" ; 

그런 다음 내가 같은 diffrent .cpp 파일로 이동을 내가 random.cpp의 중간에 StudentCS를 호출 할 경우에도 그것은 random.cpp 출력의 모든 후 StudentCS 출력을 모두 기록합니다

ofstream outfile; 
    outfile.open("random.log",std::ios_base::app); 

: StudentCS.cpp가 나는 사용하여 파일을 엽니 다. random.cpp에서 wrtie하려고하면 StudentCS.cpp가 호출되어 다시 쓰는 random.cpp로 되돌아갑니다.

답변

1

파일을 한 번 연 다음 스트림 객체를 전달합니다. 또는 이상 : 로깅이 필요한 모든 모듈에서 로거 객체를 사용할 수있게 만듭니다.

+0

예. 파일 작성 책임자에 따라 열려있는 파일의 수명을 제어하기 위해 종속성 모델이나 싱글 톤 모델을 살펴 보는 것이 좋습니다. –

0

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"; 
} 

void studentCS(ofstream & outfile) { 
    ofstream outfile("random.log",std::ios_base::app); 
    outfile << " something else "; 
} 

studentCS.cpp

하지만 CPU에 무거운/닫기 작업을 열 수있는대로 많이 피하려고한다 명심하십시오.

+0

random.cpp에서는 StudentCS에있는 스터디 함수를 호출하는 teach 함수를 호출합니다. 나는 파일을 보내고 싶지 않습니다. 다른 .cpp 파일에서 열어서 쓰고 싶습니다. –

+1

그런 다음 닫으십시오. 다른 함수를 호출하고 그 후에 append 플래그로 다시여십시오. – tomahh

0

"random.log"라는 이름을 사용하고 있습니다.

로그 파일을 작성한다는 의미입니까? 그렇다면이 과정을 더 쉽게하기 위해 개발 된 많은 로깅 클래스 중 하나를 사용하는 것이 좋습니다 (1, 2, 3, 4, 5 참조).

또 다른 생각 ...

당신은 열고 프로젝트의 다른 부분에 파일을 닫는. 다른 대답은 파일 포인터를 전달할 것을 제안했습니다. 그러나 어디에서나이 파일에 실제로 쓰고 적절한 예방 조치를 취해야한다면 여기서 전역 변수를 사용할 것을 고려해 볼 수 있습니다.