0

我有以下 C++ 程序。我打开一个文件 (inputmincut.txt) 并读取它的内容。每当我评论 n=0 行时,程序就会崩溃。这对我来说毫无意义。会发生什么?

using namespace std;
ifstream input_file;
ofstream output_file;

int n;

  void read()
    {
     int current=0; 
     int pos=0; 
     for(int i=1;i<=n;i++)
      { 
       input_file>>current;
       input_file>>pos;      
       while(pos!=-1)
        input_file>>pos;                          
      }        

     }  


int main(int argc, char *argv[])
{


    input_file.open("C:\\Dev-Cpp\\inputmincut.txt");
     input_file>>n;
     read();
     input_file.close();
     //n=0;
     input_file.open("C:\\Dev-Cpp\\inputmincut.txt");
     input_file>>n;
     read();
     input_file.close();


    system("PAUSE");
    return 0;
}

这是文本输入。

10 1 2 10 -1 2 3 1 -1 3 4 2 -1 4 5 3 -1 5 6 4 -1 6 7 5 -1 7 8 6 -1 8 9 7 -1 9 10 8 -1 10 1 9 - 1

4

2 回答 2

0
input_file.open("C:\\Dev-Cpp\\inputmincut.txt");

您确定使用"\\"而不是"\"在您的操作系统中表示路径!我认为您应该检查文件的路径,并检查您是否打开了文件?

于 2013-08-02T06:52:33.900 回答
0

首先,您必须检查文件是否已打开以供阅读。你可以这样写:

void ropen(std::string const & path, std::ifstream & file)
{
    file.open(path.c_str(), std::ios_base::in|std::ios_base::binary);
    if(!file.is_open()) throw std::exception(
        path +
        std::string(": cannot open file for reading.")
    );
}

然后 :

int main(int argc, char *argv[])
{
  std::istream file;
  ropen(path,file);
  std::line;
  while(getline(file, line))
  {
    do something with your line
  }
  return 0;
}
于 2013-08-02T07:40:41.800 回答