2017-11-28 5 views
-2

私のプログラムが停止した理由を理解できず、間違いを見つけることができません...変更を試みましたが、まだ理解できません。それは、複数の...C++プログラム.exeが動作を停止しました

コードのようになります。

void findcomm() { 
    char det = '**'; 
    for (int i = 0; i < lines.size(); i++) { 
     string str (lines[i]); 
     vector<char> k (str.begin(), str.end()); 
     vector<size_t>positions; 
     size_t pos = str.find (det, 0); 
     while (pos != string::npos) { 
      positions.push_back (pos); 
      pos = str.find (det, pos+1); 
     } 
     vector<char> c; 
     for (int g = positions[0]+2; g < positions.back()-1; g++) { 
      c.push_back (k[g]); 
     } 
     string comm (c.begin(), c.end()); 
     cout << comm << "\n"; 
     comments.push_back (comm); 
     c.clear(); 
     k.clear(); 
     positions.clear(); 
    } 
} 

私は、コードのこの部分を削除しようとしましたが、その後、姿を消した「プログラムが停止している」ので、私は問題がここにあると思います。 ありがとうございます!

+8

HTTPを置き換える見つけるのに役立つだろう線との間getch()を使用してみてくださいまたはコード をトレース: //idownvotedbecau.se/nodebugging/ – Melebius

+4

複数の文字: 'char det = '**';'は非標準ですので、コンパイラのマニュアルを参照する必要があります。 –

+1

*このコードを削除しようとしたところ、 "プログラムが停止しました"というメッセージが消えました - いくつかの変更を試みましたが、まだ理解できません。* - 試行錯誤はコンピュータ言語を学ぶ良い方法ではありませんC++。 – PaulMcKenzie

答えて

0

これはそれが

を使用例外処理techinicsをexits.alsoときに

det="**" 

det[]={"**"};

+3

これはC++であるため、文字配列ではなく 'std :: string det =" ** ";"を使用することをお勧めします。 –

+0

コードをトレースしましたか?いくつかはランタイムエラーの原因となるガベージ値を持つ可能性があります –

+0

@ThomasMatthews caracter配列には何も問題はありませんが、 'std :: string_view'は文字列や文字配列よりも優れていると私は同意します。 –

関連する問題