2017-11-28 21 views
-3

Im 방 번호를 검색하는 방법에 대해 쓰고 싶습니다. C++에서 txt의 원하는 방 번호를 포함하는 줄을 삭제하지만 모든 항목을 삭제하는 것은 무엇이 문제입니까? 그리고 그 모든 잘못된 코드는 나에게 새로운 알고리즘을 제안 할 수 있습니까?원하는 줄을 txt에서 삭제하는 방법

    int sil; 
        cout << "Silmek istediğiniz oda numarası : "; 
        cin >> sil; 
        oda.Sil(sil); 
        fstream veriler,gecici; 
        veriler.open("Veriler.txt", ios::out || ios::in || ios::app); 
        gecici.open("Gecici.txt", ios::out || ios::in || ios::app); 
        while (!veriler.eof()) 
        { 
         veriler >> oda.oda_Numara; 
         veriler >> oda.musteri_Ad; 
         veriler >> oda.musteri_Soyad; 
         veriler >> oda.oda_Ucret; 
         veriler >> oda.musteri_Kimlik; 
         veriler >> oda.musteri_Numara; 
         if (oda.oda_Numara == sil) 
          continue; 
         else 
         { 
          gecici << setw(20) << oda.oda_Numara 
           << setw(20) << oda.musteri_Ad 
           << setw(20) << oda.musteri_Soyad 
           << setw(20) << oda.oda_Ucret 
           << setw(20) << oda.musteri_Kimlik 
           << setw(20) << oda.musteri_Numara 
           << endl; 
         } 
       } 
        remove("Veriler.txt"); 
        rename("Gecici.txt", "Veriler.txt"); 
        gecici.close(); 
+0

1. 파일을 실제로 열었는지 확인하십시오. 2. [eof is bad while while] (https://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition- 고려해야 함) –

+0

3. 아마도 디버거를 사용하십시오 –

+3

[특정 행을 파일에서 삭제] (https://stackoverflow.com/questions/26576714/deleting-specific-line-from-file) 중복 가능성이 있음 –

답변

0

나는 내 대답을 편집하고 난 당신이 찾고있는 무슨이 더 생각 :

string buf; 
fstream file, toGo; 
file.open("somefile.txt"); 
toGo.open("temp-file.txt", ios::out); 

while(getline(file,buf)) 
{ 
    if(buf.find("0") != -1) toGo<<buf; 
} 
file.close(); 
rename("temp-file.txt", "somefile.txt"); 

희망이 더 낫다!

+0

큰 파일을위한 메모리 낭비가 될 것입니다 (공백을 무시하는 것은 아니며'operator >>'대신'std :: getline()'을 사용해야합니다). 두 번째 파일을 열고 원본 파일에서 읽는 동안 파일에 줄을 쓰고 파일을 닫은 다음 소스 파일을 새 파일로 바꾸는 것이 좋습니다. Thomas Matthews가 그의 코멘트에서 설명한 것처럼. –

+0

buddy하지만 검색하고 싶습니다. 삭제하고 싶습니다. 방 번호를 삭제하고 싶습니다. txt에서 문장을 쓸 때 유용할까요? –

+0

@ GöktuğYalçın 제 수정 된 답변을 사용하면 번호 나 텍스트를 연결할 수 있으며 행에 없으면 해당 행을 삭제하지 않습니다. –