2016-09-21 21 views
-2

私の配列を3行ずつ3値ずつ読みたい。あなたの値は、スペース、タブまたは改行である「ホワイトスペース」で区切られているので配列を1行ずつ読み込み3値を3値

for (unsigned int row = 0; row < 3; ++row) 
{ 
    for (unsigned int column = 0; column < 3; ++column) 
    { 
     inFile >> image[row][column]; 
    } 
} 

:私は私の行列などなどに入れて3つの値を回復するときに...

for(int i=0; i<_height; i++) { 
    for(int j=0; j<_width; j++) { 
     result = ifile.get(); 
     (image)[i][j]= (int)result; 
     // Display the array which contains data 
     cout << (image)[i][j] << " "; 
    } 
    cout << endl; 
} 
+0

あなたの質問は実際には? –

+0

ファイルにテキスト形式の値が含まれている場合は、 'ifile >> result;'を使用することができます。 –

+0

どうすれば行3の値を3つの値で取り出すことができますか? – Rayan958

答えて

1

はこれを試してみてくださいこれは、すべての値が1行または複数行にあるかどうかに関係なく機能するはずです。

編集1:安全な代替
以上が9つの値は常にあり、彼らはすべての有効な整数である前提としています。 何かがうまくいかない場合、上記はうまくいかないでしょう。以下は、より堅牢な方法です。

unsigned int row = 0; 
unsigned int column = 0; 
bool all_values_read = false; 
int value = 0; 
while ((inFile >> value) && !all_values_read) 
{ 
    image[row][column] = value; 
    ++column; 
    if (column >= 3) 
    { 
     column = 0; 
     ++row; 
     if (row >= 3) 
     { 
     all_values_read = true; 
     } 
    } 
} 
0

次のようにあなたが何かを実装することができます:get(int i, int j)関数は(またはラインがj+3前に終了した場合以下)の位置jから3つの値を回復する機能がある

int count = 0; 
for(int i=0; i<_height; i++) { 
    for(int j=0; j<_width; j = j +3) { 
     result = ifile.get(i,j); 
     (image)[i][count]= (int)result; 
     count += 1; 
     // Display the array which contains data 
     cout << (image)[i][count] << " "; 
    } 
    count = 0; 
    cout << endl; 
} 

i-th行。

+0

もちろん、必要なチェックをすべて行う必要もあります。添付のコードは単なるアイデアです! – acornagl

+0

いいえカウント++お願いしますか? – Rayan958

+0

気軽に編集してください;) – acornagl

関連する問題