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

まず、ファイルが読み取り用に開かれていることを確認する必要があります。次のように書くことができます:

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 に答える
0
input_file.open("C:\\Dev-Cpp\\inputmincut.txt");

"\\"OS でパスを表現する代わりにを使用してもよろしいですか"\"!ファイルのパスを確認し、ファイルを開くかどうかを確認する必要があると思いますか?

于 2013-08-02T06:52:33.900 に答える