c++;程序突然停止写入文件 我有很少的C++编程经验,我写了一个快速程序来查找长链表中的链接组。
在过去的两天里,我一直在使用这个程序,它工作得很好(我猜效率很低,但它工作得很好)。但它突然停止了对文件的写入。我创建了一个新文件,并更改了程序中的文件名以检查是否存在损坏,但它仍然不起作用。我也有一个相同的程序通过一个单独的链接列表进行搜索,该程序仍然在工作 代码如下: 我通过使用while循环而不是for循环检查字符串,让程序写入文件c++;程序突然停止写入文件 我有很少的C++编程经验,我写了一个快速程序来查找长链表中的链接组。,c++,io,C++,Io,在过去的两天里,我一直在使用这个程序,它工作得很好(我猜效率很低,但它工作得很好)。但它突然停止了对文件的写入。我创建了一个新文件,并更改了程序中的文件名以检查是否存在损坏,但它仍然不起作用。我也有一个相同的程序通过一个单独的链接列表进行搜索,该程序仍然在工作 代码如下: 我通过使用while循环而不是for循环检查字符串,让程序写入文件 #include <iostream> #include <fstream> #include <string> in
#include <iostream>
#include <fstream>
#include <string>
int main()
{
std::string STRING;
std::string findString;
std::string line;
std::ifstream infile;
std::cout<<"Find String: ";
std::getline(std::cin, findString, '\n');
infile.open("old.rtf");
std::ofstream returnFile("return.txt");
int a = 0;
std::string previousLine = "";
while(a < 1)
{
std::getline(infile, STRING);
while(STRING != previousLine && STRING.find(findString) != std::string::npos)
{
previousLine = STRING;
returnFile<<STRING<<"\n";
std::cout<<STRING<<std::endl;
}
}
infile.close();
std::system("pause");
return 0;
}
#包括
#包括
#包括
int main()
{
std::字符串;
std::字符串查找字符串;
std::字符串行;
std::ifstream-infle;
std::cout似乎这个问题可能与无限循环有关
int a = 0;
std::string previousLine = "";
while(a < 1)
{
// a needs to be incremented in here or it will loop forever!
}
inta=0;
std::string previousLine=“”;
while(a<1)
{
//a需要在这里递增,否则它将永远循环!
}
这个问题似乎与无限循环有关
int a = 0;
std::string previousLine = "";
while(a < 1)
{
// a needs to be incremented in here or it will loop forever!
}
inta=0;
std::string previousLine=“”;
while(a<1)
{
//a需要在这里递增,否则它将永远循环!
}
我解决了我的问题(在回答问题的人的帮助下!)
在我最初的问题中,我使用以下代码在列表中循环:
while(a < 1)
{
std::getline(infile, STRING);
if(STRING != previousLine && STRING.find(findString) != std::string::npos)
{
previousLine = STRING;
returnFile<<STRING<<'\n';
std::cout<<STRING<<std::endl;
}
}
while(a<1)
{
std::getline(填充,字符串);
if(STRING!=previousLine&&STRING.find(findString)!=std::STRING::npos)
{
前一行=字符串;
returnFile我解决了我的问题(在回答问题的人的帮助下!)
在我最初的问题中,我使用以下代码在列表中循环:
while(a < 1)
{
std::getline(infile, STRING);
if(STRING != previousLine && STRING.find(findString) != std::string::npos)
{
previousLine = STRING;
returnFile<<STRING<<'\n';
std::cout<<STRING<<std::endl;
}
}
while(a<1)
{
std::getline(填充,字符串);
if(STRING!=previousLine&&STRING.find(findString)!=std::STRING::npos)
{
前一行=字符串;
returnFileIt停止将输出写入“return.txt”抱歉,您的问题中遗漏了该位,ninja删除了我的评论。它停止将输出写入“return.txt”抱歉,您的问题中遗漏了该位,ninja删除了我的评论。@ChrisFrank您可以使用而(!infle.eof()){}
在文件结束前都是正确的,或者while(getline(infle,STRING)){}
我修复了写入文件的问题(我将更新问题中的代码)。但是无限循环仍然存在问题。@ChrisFrank您可以使用while(!infle.eof()){
在文件结束前为真,或者在(getline(infle,STRING)){}
我修复了写入文件的问题(我将更新问题中的代码)。但是我仍然有一个无限循环的问题。将内部while
更改为if
:在第一次通过循环后,STRING==previousLine
,这样就不可能再次循环了,当然?我会解决这个问题,谢谢你的评论。将内部while
更改为if
:After第一次通过循环时,STRING==previousLine
,所以它不可能再循环了,当然?我会解决的,谢谢你的评论。