我試圖從我的.txt文件中刪除一行。該文件包含有關該帳戶的所有信息。C++從.txt文件中刪除行
該行在創建帳戶時顯示「newAccount」。我使用這個命令,以便在第一次登錄時啓動教程。在教程之後,我想刪除此行,以便在下次登錄時不會獲得教程。
繼承人的代碼片段:(不工作)
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;
}
}
}
編輯:
我已經編輯我的代碼,這一點,它仍然無法正常工作:
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 2013-05-13 09:53:37
我回滾了編輯。編輯問題以回答問題是沒有幫助的,因爲它會使當前的答案無益,並且會讓後來出現問題的人感到困惑。 – hmjd 2013-05-13 11:20:21
@Hmjd,對不起,我已經將答案中的代碼從問題中刪除,但沒有閱讀所有評論。我認爲這是有道理的,如果後續編輯陳述。 – SoonDead 2013-05-13 11:27:26