C++ 텍스트 파일 쓰기

ofstream 상태 확인은 모드, 버퍼, 오류 플래그를 함께 본다

텍스트 파일 쓰기는 문자열을 내보내는 일처럼 보이지만, 실제 버그는 열기 모드, flush 시점, 실패 상태를 놓칠 때 생깁니다.

openpath + mode경로와 모드를 결정합니다.
write<<문자열과 줄바꿈을 버퍼에 보냅니다.
flushendl / flush필요한 시점에 파일로 반영합니다.
statefail / bad쓰기 실패와 심각 오류를 확인합니다.
truncate기존 내용 삭제 후 기록설정 파일처럼 전체 내용을 새로 쓰는 경우에 적합하지만 백업을 고려합니다.
append파일 끝에 추가로그처럼 기존 기록을 유지해야 할 때 사용합니다.
flush버퍼를 OS로 밀어냄`endl`은 줄바꿈과 flush를 함께 하므로 잦은 사용은 비용이 됩니다.
erroropen 성공만으로 충분하지 않음쓰기 중 디스크 공간, 권한, 장치 오류가 뒤늦게 드러날 수 있습니다.
std::ofstream out(path, std::ios::app);
if (!out) throw std::runtime_error("open failed");
out << line << '\n';
out.flush();
if (!out) throw std::runtime_error("write failed");
모드로 파일 수명을 정하고, flush/close로 반영 시점을 정하고, fail/bad로 결과를 확인하면 쓰기 손실을 줄일 수 있습니다.