2012-05-09 21 views
2

各行の列数が異なり、長さの異なる数値を持つファイルを読み込んでいますが、各列を配置する行数(20)を修正しましたアレイに?ファイルの列を配列に読み込む

は異なる配列にこれらの列を置く方法を

20 30  10 
22 10  9  3  40 
60 4 
30 200 90 
33 320 1  22 4 

(各列の間にタブがある)私は、次のようなデータファイルがあるとし,,その列1は、1つのarraryに行くと、カラム2は別のものになります。唯一の2列目には、以上の2桁の値を持ち、残りの列は、1つのまたは2桁の値を持っており、一部の列があまりにも1、2、および3

int main() 
{  
    ifstream infile; 
    infile.open("Ewa.dat"); 

    int c1[20], c2[20], ... c6[20]; 

    while(!infile.eof()) { 
     //what will be the code here? 
     infile >>lines; 
     for(int i = 1; i<=lines; i++) { 
      infile >> c1[i];  
      infile >> c2[i]; 
      . 
      . 
      infile >> c6 [20]; 
     } 
    } 
} 
+0

あなたはおそらく、C++ではなくCをタグ付けするためのもの@skaffman? – cnicutar

+0

私はC++にタグ付けしたいと思いました。なぜですか? –

+0

いいえ、あなたはまったくタグを付けませんでした。他の人がCタグを編集して追加した後、別の人がCタグをC++に修正しました。 –

答えて

1

以外nullのここでの主なアイデアです:

多くの1D配列の代わりに2D配列を使用します。
std::stringを使用して各行を読み取ります。
は、次に使用:文字列を解析支援し、このような配列に入れますistringstream is(str);を:

while(...) { 
    .... 
    getline(infile, str); 
    istringstream is(str); 
    j=0; 
    while(is) 
     { 
      is >> c[i][j]; 
     } 
    i++; 
    .... 
    } 

私はあなたに残りの部分を残しておきます。

+0

あなたの時間と助けのために非常にKingsIndianに感謝して、それは本当に有用だった –

1

std::vectorstd::istringstream、およびstd::stringのように、いくつかのC++ライブラリクラスのいくつかを利用する方が簡単かもしれません:

#include <vector> 
#include <iostream> 
#include <fstream> 
#include <sstream> 
#include <string> 

int main() { 
    std::vector<std::vector<int> > allData; 

    std::ifstream fin("data.dat"); 
    std::string line; 
    while (std::getline(fin, line)) {  // for each line 
    std::vector<int> lineData;   // create a new row 
    int val; 
    std::istringstream lineStream(line); 
    while (lineStream >> val) {   // for each value in line 
     lineData.push_back(val);   // add to the current row 
    } 
    allData.push_back(lineData);   // add row to allData 
    } 

    std::cout << "row 0 contains " << allData[0].size() << " columns\n"; 
    std::cout << "row 0, column 1 is " << allData[0][1] << '\n'; 
} 
+0

それは素晴らしい10月10日ありがとうNate Kohl –

+0

あなたは問題を解決することができます私はデータファイルに値を持たないため、配列を埋めていますか? –

+0

もう一度お悔やみして申し訳ありません、とにかく私はそれを感謝しました。 –

関連する問題