2016-08-24 3 views
-2

コードブロックとcygwinの両方でコンパイルしましたが、実行するとクラッシュします。
source.txtファイルは、次のようにフォーマットされる:なぜfasta formated DNAをとり、ベクターに変換して実行時にクラッシュするのですか

> SAMPLE1
ACTG
GCA
GTC
> SAMPLE2
TAACG
GGCC
そして、DTB、このようなものになります。
DTBを=(サンプル1、ACTGGCAGTC、サンプル2、TAACGGGCC)

#include <iostream> 
#include <fstream> 
#include <vector> 
#include <string> 
using namespace std; 
int main() 
{ 
    ifstream myfile; 
    int i=0; 
    string seq="",holder=""; 
    myfile.open("source.txt"); 
    vector<string> dtb; 
    while (myfile>> seq) 
    { 
     if (seq.substr(0,1)==">") 
     { 
      dtb[i]=seq.substr(1,seq.length()-1); 
      i++; 
      if (i!=0) 
       dtb[i]=holder; 
      holder=""; 
     } 
     else 
     { 
      holder+=seq; 
     } 
    } 
    cout<<dtb[0]<<"\n"<<dtb[1]<<"\n"<<dtb[2]<<"\n"<<dtb[3]; 
    return 0; 
} 
+0

このような問題を解決する適切なツールは、デバッガです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低限、問題を再現する[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例と、その問題を再現するためのデバッガ。 –

答えて

2

std::vectorオブジェクトは空になります。つまり、その中のインデックスは範囲外になり、の未定義の動作になります。

のように、要素をベクターに追加する必要があります。 push_back

関連する問題