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