2013-11-23 2 views
-1

Я пытаюсь удалить содержимое из файла До сих пор я достигал этой идеи, беря все данные, которые я не удаляю в другом временном файле, а затем удаляю самые старые и переименовать темп вот мой код:Что-то не работает

string username; 
       cout << "Enter The Employee you want to Remove : "; 
       cin >> username; 
       int i=0; 
       string line1,line2,line3; 
       fstream myfile; 
       fstream temp; 
       myfile.open("Data.txt"); 
       temp.open("temp.txt"); 
       if (myfile.is_open() || temp.is_open()) 
       { 
        while (myfile >> line1 >> line2 >> line3) 
        { 
         if(line1!="Employee" || username!=line2) 
         { 
          temp << line1 << endl << line2 << endl << line3 << endl; 
          continue; 
         } 
         else if (line1=="Employee" && username==line2) 
         { 
          i=1; 
         } 
        } 
        myfile.clear(); 
        myfile.seekg(0, ios::beg); 
        myfile.close(); 
        temp.close(); 
        remove("Date.txt"); 
        rename("temp.txt","Date.txt"); 
        if(i==0) 
        { 
         cout << "There is no Employee with The Name you Entered!" << endl; 
        } 
        else 
        { 
         cout << "Employee data has been Deleted." << endl; 
        } 
       } 

Я проследил код мой сам, и это не создает временный файл !! и могу ли я использовать эту технику для обновления?

+0

Похоже, когда я вручную создаю временный файл, который он запускает , но он не удаляет старейший! –

ответ

0

Очень трудно прочитать код, вставленный таким образом ... все же, я сделаю это.

Почему вы используете

(myfile.is_open() || temp.is_open()) 

как условие? Если вы не подтверждаете, что файлы BOTH открыты, поэтому они являются

(myfile.is_open() && temp.is_open()) 

?

Я спрашиваю, потому что, вероятно, ваш sw не открывает временный файл, возможно, потому, что у вас нет прав на запись в папке из ОС, но все равно проходит условный тест OR и продолжается.

Но это дикая догадка.

+0

Я улучшил сообщение, извините 4, что Отвечая на ваш вопрос, когда я && он не войдет в условие if с 1-го места: / –

Смежные вопросы