, которые я пытался сделать свою собственную версию этого примера:Почему моя удаление строки попытка не увенчается
Delete a specific line from a file
Но я не могу получить мой работать правильно. Моя текущая цель программы - удалить строку и ее информацию (которая является строкой ниже первой строки), что и делает; Однако, он также добавляет дополнительное пространство к первой линии, так что это выглядит следующим образом:
(First Line)
(Second Line) This should be the first line.
Вот код:
infile = ifstream;
outfile = ofstream;
cout<< "What string would you like to delete";
cin>>delstr;
infile.clear();
infile.seekg(0, ios::beg);
ofstream tempfile;
tempfile.open("temp.txt",std::ios::app);
while(delreset == true){
if(delstr == fLine){
getline(infile, fLine);
cout<<"String deleted.\n";
delreset = false;
while(fLine != nothing){
getline(infile, fLine);
tempfile<<fLine<<"\n";
}
tempfile.close();
infile.close();
outfile.close();
remove("example.txt");
rename("temp.txt","example.txt");
}else{
tempfile<<fLine<<endl;
getline(infile, fLine);
}
outfile.flush();
delreset = true;
}
Я удалил то, что я мог сделать это сокращенный вариант на самом деле, надеюсь, я ничего не редактировал, чтобы это не имело смысла.
Красиво отформатированный пример кода, который компилирует всегда будет получить вас дальше на этом сайте. Может быть ошибка в том, что вы опубликовали, но у меня проблемы с чтением и угадыванием кода. –
'delreset == true' - это условие, которое истинно только в том случае, когда истинно также delreset. Таким образом, вы можете просто написать 'while (delreset)' – MSalters
. Цикл устанавливает 'delreset' значение true на каждой итерации, и нет ошибки, связанной с чтением входного файла, поэтому цикл никогда не будет останавливаться даже после того, были найдены. –