2016-09-25 7 views
0

私は、繰り返し処理しようとしている数字のグリッドを持つファイルを持っています。私はグリッドの寸法を知っていますが、私は各場所の値にアクセスする方法を見つけることができないようです。これまでの部分擬似コードの概要は次のとおりです。double forループ内からファイル内の要素にアクセスしますか?

std::ifstream file(filename); 

for (y = 0; y < height; y++) 
{ 
    string line = file[y]; // wrong 
    for (x = 0; x < width; x++) 
    { 
     int value = line[x] // wrong 
    } 
} 

これを達成する最も良い方法は何ですか?助けを前にありがとう。

答えて

0

それはより次のようになります。

for (int y = 0; y < height; y++) 
{ 
    string line; 
    getline(file,line); 

    std::istringstream line_stream(line); 

    for (int x = 0; x < width; x++) 
    { 
     int value; 
     line_stream >> value; 
    } 
} 
0

をあなたは、このようなストリームにアクセスすることはできません、それはnature.Usingにシリアルである擬似コードは(次のようになりますコンパイルしようとしませんでした、しかし、このストリームアイデアです)

#include <iostream>  // std::cout 
#include <fstream>  // std::ifstream 

int main() { 

    std::ifstream ifs ("test.txt", std::ifstream::in); 

#define LINE_SIZE 10  
    char c = ifs.get(); 

    for (int i=0;ifs.good();i++) { 
     // this element is at row :(i/LINE_SIZE) col: i%LINE_SIZE 
     int row=(int)(i/LINE_SIZE); 
     int col=(i%LINE_SIZE); 
    myFunction(row,col,c); 
    c = ifs.get(); 
    } 

    ifs.close(); 

    return 0; 
} 
関連する問題