2017-01-14 5 views
-3

数値の部分列を含む文字列を整数に変換しようとしているため、数学演算を行うことができます。しかし、私は得続ける:stoiを使用している問題

libc++abi.dylib: terminating with uncaught exception of type std::invalid_argument: stoi: no conversion Abort trap: 6

私は項目にあったものを見るためにSTOIするだけの呼び出しの前にcoutを使用し、私は数が出力になるだろう。例えば 、 sequenceは、n = 2で、10だった場合、cout << item;なり出力:できるだけ早く私は、私はプログラムのクラッシュを取得stoiを使用しようとして

0 
1 
10 

for (int i = 0; i < (1 << n); ++i) 
{ 
    string item; 

    //Determining subsequence 
    for (int j = 0; j < n; ++j) 
    { 
      if (i & (1 << j)) 
      { 
      item.push_back(sequence.at(j)); 
      } 
    } 

cout << stoi(item) << endl; //error occurs here 
} 
+0

'string item 'には' stoi(item) 'を呼び出す直前に何が入っていますか? – Walter

+0

エラーをトリガするために使用された入力がなくても有効な答えはありません。 [mcve]してください。 – user4581301

答えて

1

エラーメッセージはあなたが知る必要があるすべて伝えます:ここで

はコードです stoiがメッセージ「無変換」と std::invalid_argument例外を投げ、その例外がキャッチされていなかったが、そのプログラムは終了します。

std::stoi整数に変換できないものを渡すとstd::invalid_argumentをスローすることができます。 try-catchを追加して、クラッシュを避けるためにstd::exceptionをキャッチします。 itemcoutに出力して、整数に変換しようとしている値を調べます。

また、デバッガを使用してプログラムをステップバイステップで実行し、各ステップ後に異なる変数を調べることもできます。コードを見るだけで何が間違っているのかを理解しようとすると、あなたの脳には有益ですが、あまり効果的ではありません。

関連する問題