2011-11-21 6 views
15

높은 점수를 구현하는 게임을 .txt 파일로 만들려고합니다. 내가 가진 질문은 이것이다 :파일에 쓸 때 기존 파일의 내용을 덮어 쓰지 마십시오.

ofstream fout("filename.txt"); 

이 그 이름의 파일을 만들거나 그냥 이름을 가진 파일을 보입니까 : 나는 같은 성명을 때?

fout << score << endl << player; 

이 내 이전 점수를 덮어 :

것은 내가 새롭게 프로그램을 시작하고 다음과 같은 성명을 발표 할 때마다 것입니다!

파일에 쓸 때 새 점수로 이전 점수를 덮어 쓰지 못하게 할 방법이 있습니까?

답변

32

std::ofstream 기본적으로 새 파일이 만들어집니다. append parameter으로 파일을 만들어야합니다.

ofstream fout("filename.txt", ios::app); 
+3

단지 완전성을 위해서'std :: ios :: app'입니다. 'ios'는'std' 네임 스페이스 안에있는 네임 스페이스이므로 –

13

파일 끝에 추가하기 만하면 추가 모드에서 파일을 열 수 있으므로 파일 끝에 파일을 작성하고 이전에 있던 파일의 내용을 덮어 쓰지 않습니다. 방금 추가 모드로 마지막에 그들을 시침 대신 데이터를 텍스트의 특정 라인을 덮어 쓰려면

ofstream fout("filename.txt", ios::app); 

, 당신은 (파일을 읽고 데이터를 분석하고 그것을 고정 떨어져 아마 더 좋을 것 같아 어떤 것을 추가하고, 무엇이든 삭제하고, 무엇이든 편집하고) 다시 파일에 모두 다시 써 넣습니다.

+0

파일을 읽고 해석하고 다시 모든 것을 작성하여 파일 용량이 클 경우이 파일은 말할 100기가바이트 경우 분명히, 컴퓨팅 파워를 많이 걸릴 것입니다 RAM 및 디스크 말할 것도없고 좋은 생각이 아니다 읽기/쓰기 속도. –

관련 문제