有些事情没有用

时间:2013-11-23 17:01:30

标签: visual-c++

我正在尝试从文件中删除内容 到目前为止,我已经达到了这个想法,即在另一个临时文件中删除我不删除的所有数据,然后删除最旧的并重命名temp 这是我的代码:

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;
                    }
                }

我自己跟踪代码并且它不会创建临时文件! 我可以使用这种技术进行更新吗?

1 个答案:

答案 0 :(得分:0)

读取粘贴的代码真的很难......但是,我会试一试。

你为什么使用

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

作为条件?你不应该验证BOTH文件是否已打开,因此

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

我问,因为你的sw可能没有打开临时文件,可能是因为你没有来自操作系统的文件夹的写权限,但仍然通过了OR条件测试并继续。

但这是一个疯狂的猜测。