从double for循环中访问文件中的元素?

时间:2016-09-25 06:53:44

标签: c++

我有一个带有数字网格的文件,我正在尝试迭代。我知道网格的尺寸,但我似乎无法找到一种方法来访问每个位置的值。这是我到目前为止在部分伪代码中得到的概述:

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
    }
}

实现这一目标的最佳方法是什么?提前感谢您的帮助。

2 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:0)

你无法访问这样的流,它本质上是串行的。使用流伪代码看起来像这样(没有尝试编译,但这是想法)

#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;
}