c++;程序突然停止写入文件 我有很少的C++编程经验,我写了一个快速程序来查找长链表中的链接组。

c++;程序突然停止写入文件 我有很少的C++编程经验,我写了一个快速程序来查找长链表中的链接组。,c++,io,C++,Io,在过去的两天里,我一直在使用这个程序,它工作得很好(我猜效率很低,但它工作得很好)。但它突然停止了对文件的写入。我创建了一个新文件,并更改了程序中的文件名以检查是否存在损坏,但它仍然不起作用。我也有一个相同的程序通过一个单独的链接列表进行搜索,该程序仍然在工作 代码如下: 我通过使用while循环而不是for循环检查字符串,让程序写入文件 #include <iostream> #include <fstream> #include <string> in

在过去的两天里,我一直在使用这个程序,它工作得很好(我猜效率很低,但它工作得很好)。但它突然停止了对文件的写入。我创建了一个新文件,并更改了程序中的文件名以检查是否存在损坏,但它仍然不起作用。我也有一个相同的程序通过一个单独的链接列表进行搜索,该程序仍然在工作

代码如下: 我通过使用while循环而不是for循环检查字符串,让程序写入文件

#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
,所以它不可能再循环了,当然?我会解决的,谢谢你的评论。