2016-11-28 20 views
1

各行の要素数が異なる行ごとにtxtファイルを読み込もうとしています。私はベクトルのベクトルを見つけましたが、なぜ私がベクトル内の最初のベクトルに書き込むのか分かりません。他のすべては空です。ベクトルのC++ベクトルに関する問題

vector<vector<int>> all(numverts); 
for (int i = 0; i <= (numverts - 1); i++) { 
    // reads a line of data 
    vector<int> edges; 
    int connect; 
    while (filein >> connect) { 
    edges.push_back(connect); 
    } 
    all[i] = edges; 
    edges.clear(); 
} 
+3

'while(filein >> connect)'はファイル全体が読み込まれた後に停止します。 –

+0

それで、新しい行ごとにどのように停止するように調整しますか? –

+1

ちょうど一般的なコメントです。コードエディタで 'clang-format'を使うことを検討する価値があります。 1回のキー入力で、ファイル全体を好みのコーディングスタイルにフォーマットすることができます。真剣には、おそらくC++でのプログラミングについての私の好きなことです。 –

答えて

5

あなたがgetlinestringstreamを使用することができます。

は、ここでデータを読み込むコードのスニペットです。このようにして、ファイルの各行が別々に読み込まれ、(ストリングストリームを介して)ベクターに供給されます。

vector<vector<int> > all(numverts); 
for(int i = 0; i < numverts; i++) 
{ 
    std::string line; 
    std::getline(filein, line); 
    std::stringstream lineStream(line); 
    int connect; 
    while(lineStream >> connect) 
    { 
     all[i].push_back(connect); 
    } 
} 
+1

ありがとう!私はストリングスのことを聞いていなかった。これは完全に機能しました。私はもっ​​と新しいことを学ぶことがうれしいです。 –

関連する問題