这是上面代码的写文件,请问存在什么问题,清除不成功? void Admin_ljh::writeFile_pro() { ofstream out("kechenglei.txt",ios::app); if (out) { for (int i = 0; i < proList.size(); i++) out << proList[i].xuehao << " " << proList[i].proNum << " " << proList[i].proName << " " << proList[i].proCharacter << endl; } out.close(); }
时间: 2024-03-21 15:38:30 浏览: 158
这段代码中存在一个问题,即文件清除不成功。在每次写入文件之前,最好先清空文件内容,否则会出现数据重复写入的情况。可以使用 `out.clear()` 清空文件内容。修改后的代码如下:
```cpp
void Admin_ljh::writeFile_pro() {
ofstream out("kechenglei.txt");
if (out) {
out.clear(); // 清空文件内容
for (int i = 0; i < proList.size(); i++)
out << proList[i].xuehao << " " << proList[i].proNum << " " << proList[i].proName << " " << proList[i].proCharacter << endl;
}
out.close();
}
```
相关问题
请问这段代码添加了很多重复课程,如何解决? void Admin_ljh::insertList_pro()//添加课程信息 { system("cls"); int a; Subject_ljh q; cout << "\t\t***************欢迎来到添加课程信息功能******************" << endl; cout << "\t\t课程基本信息一览表:" << endl; cout << endl; cout << "\t\t--------------
为了解决添加重复课程的问题,可以在添加课程信息之前先进行查重操作。可以在课程信息的存储结构中添加一个唯一标识符,比如课程编号或课程名称,然后在添加课程信息之前先查询该课程是否已经存在于系统中。如果存在,则提示用户该课程已经存在,不需要重复添加;如果不存在,则可以继续添加该课程信息。另外,可以添加一个更新课程信息的功能,当用户输入已经存在的课程信息时,可以提示用户是否需要更新该课程信息。这样可以避免重复添加课程信息,提高系统的数据质量。
为什么还是没有清空kechenglei.txt文本里面的数据? void Admin_ljh::writeFile_pro() { ofstream out("kechenglei.txt",ios::app); if (out) { out.clear(); // 清空文件内容 for (int i = 0; i < proList.size(); i++) out << proList[i].xuehao << " " << proList[i].proNum << " " << proList[i].proName << " " << proList[i].proCharacter << endl; } out.close(); } void Admin_ljh::clearList_pro() { while (true) { string sel = "0"; system("cls"); cout << "\t\t*******欢迎来到清空系统数据功能********" << endl; cout << "\t\t------------------" << endl; cout << "\t\t1 确认清空系统数据" << endl; cout << "\t\t2 返回上一级" << endl; cout << "\t\t------------------" << endl; cout << "\t\t请慎重选择【1-2】:"; cin >> sel; while (sel != "1" && sel != "2") { cout << "\t\t输入不合法,请重新输入【1-2】:"; cin >> sel; } if (sel == "1") { proList.clear(); writeFile_pro(); cout << "\t\t清空成功!" << endl; cout << "\t\t"; system("pause"); } else { return; } } }
在这段代码中,虽然使用了out.clear()来清空文件内容,但是这个函数并不是用来清空文件的,而是用来清除文件流中的错误状态标志的。正确的做法应该是在打开文件时使用ios::trunc模式来覆盖原有的文件内容,而不是使用ios::app模式来在文件末尾追加内容。修改代码如下:
```
void Admin_ljh::writeFile_pro() {
ofstream out("kechenglei.txt", ios::trunc);
if (out) {
for (int i = 0; i < proList.size(); i++)
out << proList[i].xuehao << " " << proList[i].proNum << " " << proList[i].proName << " " << proList[i].proCharacter << endl;
}
out.close();
}
```
这样就能清空文件内容了。
阅读全文