大佬教程收集整理的这篇文章主要介绍了从文件 C++ 中删除一行,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在尝试从文本文件中“删除”一行时遇到了很大的困难,并且四处查看。我是 C++ 的初学者,所以我还不知道如何使用向量。
当我运行这个程序时,它不会向 tempfile 写入任何内容。我错过了什么吗?
String @R_675_9421@eline,line;
ifstream addressfile;
addressfile.open("AddressBook.txt");
ofstream tempfile;
tempfile.open("temp.txt");
int i = 1;
while (getline(addressfile,linE)) {
cout << (i++) << " " << line << endl;
}
cout << "Which line do you want to remove?" << endl;
cin >> @R_675_9421@eline;
// GOOD UP TO HERE
while (getline(addressfile,linE)) {
if (line != @R_675_9421@elinE); {
tempfile << line << endl;
}
}
tempfile.close();
addressfile.close();
remove ("AddressBook.txt");
rename ("temp.txt","AddressBook.txt");
cout << endl << endl;
更新 - 这是我拥有的当前代码,但仍未写入 tempfile
ifstream addressfile;
addressfile.open("AddressBook.txt");
ofstream tempfile;
tempfile.open("temp.txt");
String line;
int lineNum,i;
i = 1;
while (getline(addressfile,linE)) {
cout << (i++) << " " << line << endl;
}
addressfile.seekg(0);
cout << "Which line number do you want to remove?" << endl;
cin >> lineNum;
// GOOD UP TO HERE
i = 1;
while (getline(addressfile,linE)) {
if (i++ != lineNum) {
tempfile << line << endl;
}
}
tempfile.close();
addressfile.close();
//remove ("AddressBook.txt");
//rename ("temp.txt","AddressBook.txt");
cout << endl << endl;
在第一个 while
循环中,您从 addressFile
读取行,直到到达文件末尾。然后,您的第二个 while
循环试图再次从同一个文件中读取行,但没有什么可读取的了。
您需要在 addressFile
回到文件的开头,然后才能再次重新阅读这些行。在您的 2 个循环之间添加此语句:
addressFile.seekg(0);
解决这个问题后,您还有一些其他问题。
在你的第二个循环中,你的 if
有一个错误的 ;
,所以你实际上不会忽略任何行,你会写all 到 tempFile
的行。
此外,您应该考虑要求用户提供要忽略的行号,而不是实际的行文本。并在使用前验证用户的输入。
您还应该验证文件是否已成功打开。
试试这个:
ifstream addressFile("AddressBook.txt");
if (!addressFile.is_open()) {
cerr << "Can't open AddressBook.txt" << endl;
return;
}
ofstream tempFile("temp.txt");
if (!tempFile.is_open()) {
cerr << "Can't create temp.txt" << endl;
return;
}
String line;
int lineNum,i;
i = 1;
while (getline(addressFile,linE)) {
cout << (i++) << " " << line << endl;
}
addressFile.seekg(0);
do {
cout << "Which line number do you want to remove?" << endl;
if (cin >> lineNum) {
if (lineNum > 0) break;
cerr << "Please choose a number greater than zero" << endl;
}
else {
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');
cerr << "Invalid number,try again" << endl;
}
}
while (true);
i = 1;
while (getline(addressFile,linE)) {
if (i != lineNum) {
tempFile << line << endl;
}
++i;
}
tempFile.close();
addressFile.close();
remove ("AddressBook.txt");
rename ("temp.txt","AddressBook.txt");
cout << endl << endl;
以上是大佬教程为你收集整理的从文件 C++ 中删除一行全部内容,希望文章能够帮你解决从文件 C++ 中删除一行所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。