Я пытаюсь удалить строку из моего .txt-файла. Файл содержит всю информацию об учетной записи.C++ Удалить строку из файла .txt
Линия говорит «newAccount» и создается при создании учетной записи. Я использую это, чтобы загружать учебник при первом входе в систему. После учебного курса я хочу удалить эту строку, чтобы в следующем входе вы не получили учебник.
Heres фрагмент кода: (не работает)
void loginScreen(string user){
system("CLS");
cout << "Hello " + user << endl;
ifstream file(user + ".txt");
string line1;
getline(file, line1);
// Begin reading your stream here
string line2;
getline(file, line2);
if(line2 == "newAccount"){
cout << "Your account is new";
char cUser[200];
strcpy_s(cUser, user.c_str());
std::ofstream newFile(user + ".txt.new");
// Do output...!!!!!!!
newFile << line1;
newFile.close();
if (newFile) {
remove(cUser + ".txt");
rename(cUser + ".txt", cUser + ".txt");
} else {
std::cerr << "Write error on output" << std::endl;
}
}
}
EDIT:
Я редактировал свой код к этому, и он по-прежнему не работает:
const string oldFileName(user + ".txt");
const string newFileName(user + ".txt.new");
std::ofstream newFile(user + ".txt.new");
// Do output...!!!!!!!
newFile << line1;
newFile.close();
if(line2 == "newAccount"){
ofstream newFile(newFileName.c_str()); // c++11 allows std::string
if (newFile){
if (0 == remove(oldFileName.c_str())){
if (0 != rename(newFileName.c_str(), oldFileName.c_str())){
// Handle rename failure.
}
}else{
// Handle remove failure.
}
}
Я пытался использовать STRCPY (cUser, user.c_str ()); но мой компилятор ошибся и даже рекомендовал мне использовать strcpy_s – nlreturns
Я откатил редактирование. Редактирование вопроса в ответ на ответы не помогает, поскольку оно делает текущие ответы бесполезными и смущает людей, которые приходят к вопросу позже. – hmjd
@Hmjd, извините, я вырезал код из ответа на вопрос, не читая все комментарии. Я думаю, что это имеет смысл там, если записаны подпоследовательные изменения. – SoonDead