ユーザーが指定した削除する1行を除いて、各行を新しいテキストファイル(temp.txt)にコピーし、元のテキストファイル(staffMembers.txt)を削除して、テキストファイルから行を削除しています。 txt) を削除し、temp.txt の名前を staffMembers.txt に変更します。
staffMembers.txt の内容は次のとおりです。
1 | First Person | Manager | 123.45
2 | Second Person | Full Time | 123.45
3 | Third Person | Casual | 123.45
staffMembers.txt の内容を temp.txt にコピーすると、次のようになります。
1 | First Person | Manager | 123.45
2 | Second Person | Full Time | 123.45
3 | Third Person | Casual | 123.45
*** new line ***
テキストファイルの最後に新しい行が作成されないようにする方法を誰か説明してもらえますか? 私のコードは次のとおりです。
void deleteStaffMember()
{
outStream.open("temp.txt", ios::app);
if(outStream.fail())
{
cout << "Unable to open temp.txt.\n";
exit(1);
}
inStream.open("staffMembers.txt");
if(inStream.fail())
{
cout << "Unable to open staffMembers.txt.\n";
exit(1);
}
else
{
cout << endl << "Please enter a staff members ID to delete: ";
cin >> deleteLine;
while(getline(inStream, line))
{
string firstCharacter;
firstCharacter += line[0];
if (firstCharacter != deleteLine)
{
outStream << line << endl;
}
else
{
inStream.close();
outStream.close();
cout << "Error. Unable to find staff member.\n" << endl;
break;
}
}
}
inStream.close();
outStream.close();
remove("staffMembers.txt");
rename("temp.txt", "staffMembers.txt");
cout << "The staff member has been deleted successfully.\n" << endl;
system("pause");
system("cls");
}
outStream << line << endl;からendlを削除できません。temp.txt は次のようにフォーマットされているためです。
1 | First Person | Manager | 123.452 | Second Person | Full Time | 123.453 | Third Person | Casual | 123.45