【发布时间】:2015-03-13 01:30:19
【问题描述】:
我一直在尝试制作我自己的这个例子:
Delete a specific line from a file
但我无法让我的工作正常。我目前对该程序的目标是删除字符串及其信息(即第一个字符串下方的字符串),它会这样做;但是,它还在第一行添加了一个额外的空间,使其看起来像这样:
(First Line)
(Second Line) This should be the first line.
代码如下:
infile = ifstream;
outfile = ofstream;
cout<< "What string would you like to delete";
cin>>delstr;
infile.clear();
infile.seekg(0, ios::beg);
ofstream tempfile;
tempfile.open("temp.txt",std::ios::app);
while(delreset == true){
if(delstr == fLine){
getline(infile, fLine);
cout<<"String deleted.\n";
delreset = false;
while(fLine != nothing){
getline(infile, fLine);
tempfile<<fLine<<"\n";
}
tempfile.close();
infile.close();
outfile.close();
remove("example.txt");
rename("temp.txt","example.txt");
}else{
tempfile<<fLine<<endl;
getline(infile, fLine);
}
outfile.flush();
delreset = true;
}
我删除了我所能做的,使它成为实际程序的删节版本,希望我没有编辑任何东西,所以它没有意义。
【问题讨论】:
-
格式良好的编译代码示例将始终让您在此站点上走得更远。您发布的内容可能存在错误,但我在阅读和猜测缺少哪些代码时遇到了麻烦。
-
delreset == true是一个只有当 delreset 本身也为真时才为真的条件。所以你可以写while(delreset) -
循环在每次迭代时都将
delreset设置为true,并且在处理输入文件读取时没有错误,因此循环永远不会停止,即使在找到所需的行之后也是如此。