2012-04-20 3 views
2

루프 내에서 ios::app 모드의 파일에 일부 텍스트를 출력하려면 ofstream을 사용하고 있습니다. 그러나 어떤 단계를 거친 후에는 파일의 내용을 지워야합니다. 파일을 삭제하고 다시 열거 나 ios::trunc으로 다시 열어서 처리 할 수 ​​있다는 것을 알고 있지만 파일을 닫지 않고 완료 할 수있는 곳이 있습니까?C++에서 텍스트 파일의 내용을 동적으로 지울 수있는 방법이 있습니까?

+2

코드의 두 줄을 피할 방법이 있습니까? – ildjarn

+1

왜 파일에 무언가를 쓰고, 다시 루프 안에있는 모든 것을 삭제하기를 원합니까? – garbagecollector

+0

이 파일은 디버그에 사용 된 프로그램 출력의 임시 상태를 저장하는 데 사용되었습니다. 그러나 출력 정보는 한 번에 약 300M 정도입니다. 10 루프마다 상태를 저장하겠습니다. 이 정보는 디버그 (일부 메시지가 나타날 때까지)에만 사용됩니다. 백만 시간 동안 전체 프로그램을 반복하기 때문에 매번 파일을 열고 다시 닫으면 너무 느려집니다. – user1285419

답변

2

ios::app 모드로 열어 본 경우 다시 열지 않고 콘텐츠를 지울 수 없습니다. ofstream은 텍스트 만 파일에 넣을 수 있으며 텍스트 파일은 순차적이므로 텍스트에서 직접 데이터를 지울 수는 없습니다.

+0

답장을 보내 주셔서 감사합니다. – user1285419

0

io 스트림이 가능할 수도 있지만 일반적으로 현재 위치를 0으로 설정하고 파일의 EOF 마커를 설정하면 열린 파일을자를 수 있습니다. 예를 들어, Win32 API의 경우 SetFilePointer()SetEndOfFile()을 사용하면됩니다.

관련 문제